iOS中tableView的下拉刷新与上拉加载(一)
2014-09-19 18:17
411 查看
如今,下拉刷新与上拉加载越来越流行了,你做个应用要是没有这个功能,都不好意思拿出手,苹果SDK顺应大流推出了下拉刷新功能,感觉不是很好用。而且也没有加载更多方法,第三方库给我提供了很好的解决方案。如EGOTableViewPullRefresh。
将该库复制到项目目录下
![](http://img.blog.csdn.net/20140919185604335?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ3BoNjY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
导入头文件和代理 EGORefreshTableHeaderDelegate
声明一些变量用来布局和控制刷新:
在- (void)viewDidLoad 方法里进行初始化
实现代理方法:
之所以能下拉刷新,关键就在于这两个方法
这两个方法将tableView的实时偏移传给refreshView。当偏移达到一定距离就开始刷新
将该库复制到项目目录下
导入头文件和代理 EGORefreshTableHeaderDelegate
#import "EGORefreshTableHeaderView.h"
声明一些变量用来布局和控制刷新:
UITableView *_tableView; NSMutableArray *_dataArray; //是否可以刷新 BOOL _isRefresh; //关键,刷新控制器 EGORefreshTableHeaderView *_refreshView;
在- (void)viewDidLoad 方法里进行初始化
_dataArray = [[NSMutableArray alloc]init]; _tableView = [[UITableView alloc]initWithFrame: CGRectMake(0, 0, 320, self.view.frame.size.height-64-49)]; self.automaticallyAdjustsScrollViewInsets = NO; _tableView.dataSource = self; _tableView.delegate = self; [self.view addSubview:_tableView]; _refreshView = [[EGORefreshTableHeaderView alloc] initWithFrame:CGRectMake(0, -460, 320, 460)]; _refreshView.delegate = self; [_tableView addSubview:_refreshView];
实现代理方法:
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { return 90; } -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return _dataArray.count; } -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { return nil; } //tableView的代理方法 -(void)scrollViewDidScroll:(UIScrollView *)scrollView { [_refreshView egoRefreshScrollViewDidScroll:_tableView]; } -(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate { [_refreshView egoRefreshScrollViewDidEndDragging:_tableView]; } #pragma mark - #pragma mark EgoRefresh的代理方法 //更新时间 -(NSDate *)egoRefreshTableHeaderDataSourceLastUpdated:(EGORefreshTableHeaderView *)view { return [NSDate date]; } //是否可以刷新 -(BOOL)egoRefreshTableHeaderDataSourceIsLoading:(EGORefreshTableHeaderView *)view { return _isRefresh; } //触发方法 -(void)egoRefreshTableHeaderDidTriggerRefresh:(EGORefreshTableHeaderView *)view { _isRefresh = YES; [self pullDownRefresh];//调用刷新方法 } //刷新处理 -(void)pullDownRefresh { //1.开始网络请求(因为是更新,所以接口不用变),将_dataArray里面的数据清空 //2.请求的数据保存在_dataArray里面,并重新加载_tableView //3.调用endPullDownRefresh方法,停止刷新 } //结束下拉刷新 -(void)endPullDownRefresh { [_refreshView egoRefreshScrollViewDataSourceDidFinishedLoading:_tableView]; _isRefresh = NO; }
之所以能下拉刷新,关键就在于这两个方法
-(void)scrollViewDidScroll:(UIScrollView *)scrollView { [_refreshView egoRefreshScrollViewDidScroll:_tableView]; } -(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate { [_refreshView egoRefreshScrollViewDidEndDragging:_tableView]; }
这两个方法将tableView的实时偏移传给refreshView。当偏移达到一定距离就开始刷新
相关文章推荐
- iOS中tableView的下拉刷新与上拉加载(二)
- IOS tableview下拉刷新上拉加载分页
- tableView下拉刷新和上拉加载的原理
- android WJYScorllTableView可上拉加载下拉刷新且可以左右滚动的listview
- IOS控件 Tableview 下拉刷新,加载数据
- IOS控件 Tableview 下拉刷新,加载数据
- iOS, PullTableView实现下拉刷新,上拉加载数据
- IOS MJRefresh给tableview下拉刷新上拉加载分页
- iOS UIScrollView 的下拉刷新和上拉加载的实现
- iOS UITableView 的下拉刷新和上拉加载的实现
- iOS不得姐项目--推荐关注模块(一个控制器控制两个tableView),数据重复请求的问题,分页数据的加载,上拉下拉刷新(MJRefresh)
- IOS控件 Tableview 下拉刷新,加载数据
- iOS开发 - 让tableView不能下拉刷新,可以上拉加载
- ios tableView分页加载-sqlite
- iOS tableView上下拉刷新
- IOS TableView远程图片加载笔记
- IOS开发中如何解决TableView中图片延时加载
- iOS开发中如何解决TableView中图片延时加载
- IOS从网络上异步加载一系列的图片并显示在tableview上的例子
- ios tableview 那些事(二十二) 使cell高度可变的tableview加载速度更快