下拉和上拉刷新
刷新的时候有两种方法:①第三方库 ②系统自带的库
/************第三方库*********************************/
1.首先导入EGOTableViewPullRefresh第三方库,导入头文件
2.定义一个全局变量
EGORefreshTableHeaderView *_refreshView;
3.初始化_refreshView,遵守协议,将它加入_tableView中
1 _refreshView = [[EGORefreshTableHeaderView alloc] initWithFrame:CGRectMake(0, -480, self.view.frame.size.width, 480)]; 2 _refreshView.delegate = self; 3 [_tableView addSubview:_refreshView];
4.在引用第三方库的时候,要将其放入scrollView的函数中用
1 - (void)scrollViewDidScroll:(UIScrollView *)scrollView 2 { 3 [_refreshView egoRefreshScrollViewDidScroll:scrollView]; 4 5 } 6 7 //停止滑行 8 - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate 9 { 10 [_refreshView egoRefreshScrollViewDidEndDragging:scrollView]; 11 } 12 13 //最后一次刷新时间 14 - (NSDate *)egoRefreshTableHeaderDataSourceLastUpdated:(EGORefreshTableHeaderView *)view 15 { 16 return [NSDate date];//输出当前时间 17 }
5.在你下拉的过程中,如果不断的下拉的时候,会刷新好多次,不符合我们的要求,所以这里要定义个BOOL变量来判断他是否是在加载数据。。。。
1 BOOL _isRefresh; 2 //是否在加载数据 3 - (BOOL)egoRefreshTableHeaderDataSourceIsLoading:(EGORefreshTableHeaderView *)view 4 { 5 6 return _isRefresh; 7 }
6.在触发刷新的时候,将isRefresh的值变为YES,表示他正在刷新中,不允许你再进行请求,刷新数据。
1 //触发刷新 2 - (void)egoRefreshTableHeaderDidTriggerRefresh:(EGORefreshTableHeaderView *)view 3 { 4 //刷新中 5 _isRefresh = YES; 6 //一般这里开始进行网络请求,刷新数据,这里用timer来模拟一下 7 [NSTimer scheduledTimerWithTimeInterval:3 target:self selector:@selector(endRefresh) userInfo:nil repeats:NO]; 8 9 }
7.在结束刷新的时候,将数据加到_dataArray中,刷新table列表,将_isRefresh值变为NO,表示已刷新结束,可以再次请求了。。。。
1 //结束刷新 2 - (void)endRefresh 3 { 4 [_dataArray addObject:@"成都"]; 5 [_tableView reloadData]; 6 //结束刷新 7 [_refreshView egoRefreshScrollViewDataSourceDidFinishedLoading:_tableView]; 8 _isRefresh = NO; 9 }