zoukankan      html  css  js  c++  java
  • 使用EGOTableViewPullRefresh(二)实现上拉、下拉刷新

      上一章提到的EGOTableViewPullRefresh只实现了下拉功能,而没有上拉的功能。要实现上拉刷新可以自己在EGORefreshTableHeaderView源码基础上更改label、箭头等位置来实现。这里介绍一个同时集成下拉刷新和上拉加载更多的类库EGOTableViewPullRefresh(名字相同,但是该框架实现了上拉,也是在以前基础上更改的)。

    英文原文和类库下载地址:https://github.com/emreberge/EGOTableViewPullRefresh

    附带 Demo效果

      

    Whats different on this fork:

    • 容易集成,使用interface builder 添加tableView进行配置。
    • 配置简单, 箭头头像,背景颜色和文本颜色都能通过PullTableView类的属性很容易的更改。  
    • 上拉加载更多数据功能在Table的底部。
    • 可以通过代码修改刷新和加载更多动画。

    The fast setup:

    • 添加 QuartzCore.framework 到你的工程中。
    • 将 EGOTableViewPullRefresh 拖到你的工程目录下。
    • 查看 PullTableView.h 文件可用的属性。
    • 添加一个PullTableView 到你代码中,实现PullTableViewDelegate委托方法。
    • 欣赏吧。

    The detailed setup (Walk through for creating the demo project):

    • 创建一个新的xcode工程
    • 选择 View Based Application 模板(xcode 4.2以后版本是 Single View Application模板)
    • 工程名字 EGOTableViewPullRefreshDemo
    • 在工程文件下创建EGOTableViewPullRefreshDemoViewController控制器类(Single View Application模板不需这步)
    • 添加 QuartzCore.framework 到工程中

    添加 PullTableView 到工程里:

    • 拖拽 EGOTableViewPullRefresh 目录下文件到工程支持的文件组下,确保(EGOTableViewPullRefresh)下文件都拷贝到目标文件组下。 

    添加 PullTable 视图到 EGOTableViewPullRefreshDemoViewController.xib上:

    • 拖一个UITableView控件到View视图上.
    • 打开 Identity inspector 将Table 的继承类由  UITableView 改成PullTableView
    • 连接 dataSources数据源和 pullDelegate协议到PullTableView的 File's owner上

    配置视图控制器的头文件 EGOTableViewPullRefreshDemoViewController.h:

    • 添加 #import "PullTableView.h"
    • 声明 PullTableViewDelegate 和 UITableViewDataSource协议
    • 创建一个属性名为pullTableView的输出口连接到interface Builder上的tableView上

    配置视图控制器和页脚 EGOTableViewPullRefreshDemoViewController.m

    • 在.m文件中添加下面代码
     1 #pragma mark - Refresh and load more methods
     2 
     3 - (void) refreshTable
     4 {
     5     /*
     6 
     7          Code to actually refresh goes here.  刷新代码放在这
     8 
     9      */
    10     self.pullTableView.pullLastRefreshDate = [NSDate date];
    11     self.pullTableView.pullTableIsRefreshing = NO;
    12 }
    13 
    14 - (void) loadMoreDataToTable
    15 {
    16     /*
    17 
    18      Code to actually load more data goes here.  加载更多实现代码放在在这
    19 
    20      */
    21     self.pullTableView.pullTableIsLoadingMore = NO;
    22 }
    23 
    24 #pragma mark - UITableViewDataSource
    25 
    26 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
    27 {
    28     return 5;
    29 }
    30 
    31 - (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    32 {
    33     return 10;
    34 }
    35 
    36 - (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    37 {
    38     static NSString *cellIdentifier = @"Cell";
    39 
    40     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
    41 
    42     if(!cell) {
    43         cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
    44     }
    45     cell.textLabel.text = [NSString stringWithFormat:@"Row %i", indexPath.row];
    46 
    47     return cell;
    48 }
    49 
    50 - (NSString *) tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
    51 {
    52     return [NSString stringWithFormat:@"Section %i begins here!", section];
    53 }
    54 
    55 - (NSString *) tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section
    56 {
    57     return [NSString stringWithFormat:@"Section %i ends here!", section];
    58 }
    59 
    60 #pragma mark - PullTableViewDelegate
    61 
    62 - (void)pullTableViewDidTriggerRefresh:(PullTableView *)pullTableView
    63 {
    64 
    65     [self performSelector:@selector(refreshTable) withObject:nil afterDelay:3.0f];
    66 }
    67 
    68 - (void)pullTableViewDidTriggerLoadMore:(PullTableView *)pullTableView
    69 {
    70     [self performSelector:@selector(loadMoreDataToTable) withObject:nil afterDelay:3.0f];
    71 }
    • 对于UI的配置,在ViewDidLoad()方法里面添加下面代码(比如 修改刷新和上拉的背景色箭头头像等)
    1 self.pullTableView.pullArrowImage = [UIImage imageNamed:@"blackArrow"];
    2 self.pullTableView.pullBackgroundColor = [UIColor yellowColor];
    3 self.pullTableView.pullTextColor = [UIColor blackColor];
    • 对于手动设置动画可使用 pullTableIsRefreshing 和pullTableIsLoadingMore 属性. 比如在 viewWillAppear:方法里面添加下面的代码
    1 if(!self.pullTableView.pullTableIsRefreshing) {
    2     self.pullTableView.pullTableIsRefreshing = YES;
    3     [self performSelector:@selector(refreshTable) withObject:nil afterDelay:3];
    4 }
  • 相关阅读:
    查询端口号的连接情况
    mac环境下安装python3的requests包
    Apollo配置中心介绍
    简单工厂,工厂方法,抽象工厂模式对比
    全表查询sql执行链路排查
    logstash部署及项目日志输出到ES
    【SpringMVC入门系列】篇4:SpringMVC传值方式
    【设计模式】外观模式
    【SpringMVC入门系列】篇3:@RequestMapping & @RequestHeader & @CookieValue详解与REST风格请求
    【SpringMVC入门系列】篇1:SpringMVC基本使用与执行流程
  • 原文地址:https://www.cnblogs.com/ubersexual/p/3264802.html
Copyright © 2011-2022 走看看