下拉和上拉刷新

    刷新的时候有两种方法:①第三方库  ②系统自带的库

/************第三方库*********************************/

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 }

 

posted @ 2015-03-25 17:52  Angelone  阅读(107)  评论(0编辑  收藏  举报