iOS下拉刷新上拉加载更多EGOTableViewPullRefresh类库

简介:

   在一个项目开发过程中为了更好的体验经常会用到下拉刷新更新数据,当然也伴随一些上拉加载更多数据的情况;当前比较火的EGOTableViewPullRefresh只实现了下拉功能,而没有上拉的功能。这里介绍一个同时集成下拉刷新和上拉加载更多的类库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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#pragma mark - Refresh and load more methods
- ( void ) refreshTable
{
     /*
          Code to actually refresh goes here.
      */
     self.pullTableView.pullLastRefreshDate = [NSDate date];
     self.pullTableView.pullTableIsRefreshing = NO;
}
- ( void ) loadMoreDataToTable
{
     /*
      Code to actually load more data goes here.
      */
     self.pullTableView.pullTableIsLoadingMore = NO;
}
#pragma mark - UITableViewDataSource
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
     return  5;
}
- (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
     return  10;
}
- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
     static  NSString *cellIdentifier = @ "Cell" ;
     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
     if (!cell) {
         cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
     }
     cell.textLabel.text = [NSString stringWithFormat:@ "Row %i" , indexPath.row];
     return  cell;
}
- (NSString *) tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
     return  [NSString stringWithFormat:@ "Section %i begins here!" , section];
}
- (NSString *) tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section
{
     return  [NSString stringWithFormat:@ "Section %i ends here!" , section];
}
#pragma mark - PullTableViewDelegate
- ( void )pullTableViewDidTriggerRefresh:(PullTableView *)pullTableView
{
     [self performSelector:@selector(refreshTable) withObject:nil afterDelay:3.0f];
}
- ( void )pullTableViewDidTriggerLoadMore:(PullTableView *)pullTableView
{
     [self performSelector:@selector(loadMoreDataToTable) withObject:nil afterDelay:3.0f];
}


  • 对于UI的配置,在ViewDidLoad()方法里面添加下面代码(比如 修改刷新和上拉的背景色箭头头像等)

1
2
3
self.pullTableView.pullArrowImage = [UIImage imageNamed:@ "blackArrow" ];
self.pullTableView.pullBackgroundColor = [UIColor yellowColor];
self.pullTableView.pullTextColor = [UIColor blackColor];

  • 对于手动设置动画可使用 pullTableIsRefreshing 和pullTableIsLoadingMore 属性. 比如在 viewWillAppear:方法里面添加下面的代码

1
2
3
4
if (!self.pullTableView.pullTableIsRefreshing) {
     self.pullTableView.pullTableIsRefreshing = YES;
     [self performSelector:@selector(refreshTable) withObject:nil afterDelay:3];
}



     本文转自新风作浪 51CTO博客,原文链接:http://blog.51cto.com/duxinfeng/1214858,如需转载请自行联系原作者


相关文章
|
iOS开发
iOS 利用贝塞尔曲线实现Q弹的下拉刷新
iOS 利用贝塞尔曲线实现Q弹的下拉刷新
55 0
|
安全 iOS开发
iOS小技能:下拉刷新控件的适配
1. 下拉顶部背景色设置: 往tableView的父控件添加拉伸背景视图 2. present 半屏适配 iOS13 modalPresentationStyle属性默认不是全屏样式`UIModalPresentationFullScreen`,而是半屏样式,需要根据需求手动设置。 present 半屏,会导致列表下拉刷新失效。
213 0
iOS小技能:下拉刷新控件的适配
|
iOS开发
iOS开发 - 让tableView不能下拉刷新,可以上拉加载
iOS开发 - 让tableView不能下拉刷新,可以上拉加载
324 0
|
API iOS开发 UED
iOS集成下拉刷新控件 & 实现无感知上拉加载更多
iOS集成下拉刷新控件 & 实现无感知上拉加载更多
326 0
iOS集成下拉刷新控件 & 实现无感知上拉加载更多
|
JSON 数据格式 iOS开发
IOS开发专题---转化解析JSON格式为字符格式(原生类库解析)
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.
743 0