EGOTableViewPullRefresh:点击打开链接https://github.com/enormego/EGOTableViewPullRefresh
RootViewController.m中的
//把EGORefreshTableHeaderView *view接到tableview的上面,所以坐标是(0,-460,320,460),这样下拉出来的就是EGORefreshTableHeaderView *view的内容
EGORefreshTableHeaderView *view = [[EGORefreshTableHeaderViewalloc]initWithFrame:CGRectMake(0.0f,0-self.tableView.bounds.size.height,self.view.frame.size.width,self.tableView.bounds.size.height)];
整个下拉刷新的过程:
初始化设置,上面的标签显示刷新的状态,下面的标签显示更新时间,箭头和滚动的圆圈(UIActivityIndicatorView),并把状态设置为正常EGOOPullRefreshNormal
开始拖动
把状态设置为正在下拉 EGOOPullRefreshPulling
结束拖动
触发刷新
表视图重新加载数据
设置正在加载状态
scrollview的contentInset属性增加滚动区域上方60点
表视图数据加载完成
scrollview的contentInset属性增加滚动区域上方0点
设置正常状态
在下面这个委托里,一定要用线程的方法执行doneLoadingTableViewData,不然的话就会出现下拉出来的就不会再缩回去了,而且圆圈一直在转。
- (void)egoRefreshTableHeaderDidTriggerRefresh:(EGORefreshTableHeaderView*)view{
NSLog(@"egoRefreshTableHeaderDidTriggerRefresh");
[selfreloadTableViewDataSource];
[selfperformSelector:@selector(doneLoadingTableViewData)withObject:nil afterDelay:3.0];
//如果让上面的方法立即执行,下拉出来的就不会再缩回去了,而且圆圈一直在转。这时,它最终转到了 - (void)egoRefreshScrollViewDidScroll:(UIScrollView *)scrollView中的 scrollView.contentInset = UIEdgeInsetsMake(offset, 0.0f, 0.0f, 0.0f);这一行代码,所以圆圈缩不回去,把offset改为0就缩回去了
// [self doneLoadingTableViewData];
}
多线程执行过程:
结束拖动
触发刷新
表视图重新加载数据
设置正在加载状态
scrollview的contentInset属性增加滚动区域上方60点
表视图数据加载完成
scrollview的contentInset属性增加滚动区域上方0点
设置正常状态
多线程:[self performSelector:@selector(doneLoadingTableViewData) withObject:nil afterDelay:3.0];
egoRefreshScrollViewDidEndDragging
egoRefreshTableHeaderDidTriggerRefresh
reloadTableViewDataSource
[self setState:EGOOPullRefreshLoading];
[_activityViewstartAnimating]
scrollView.contentInset = UIEdgeInsetsMake(60.0f, 0.0f,0.0f, 0.0f);
NSLog(@"_state == EGOOPullRefreshLoading)");
scrollView.contentInset = UIEdgeInsetsMake(offset, 0.0f, 0.0f,0.0f);
doneLoadingTableViewData
egoRefreshScrollViewDataSourceDidFinishedLoading
[scrollView setContentInset:UIEdgeInsetsMake(0.0f,0.0f, 0.0f,0.0f)];
[self setState:EGOOPullRefreshNormal];
立即执行,不用线程的方法执行过程如下:
结束拖动
触发刷新
表视图重新加载数据
表视图数据加载完成
scrollview的contentInset属性增加滚动区域上方0点
设置正常状态
设置正在加载状态
scrollview的contentInset属性增加滚动区域上方60点
立即执行:[self doneLoadingTableViewData];
egoRefreshScrollViewDidEndDragging
egoRefreshTableHeaderDidTriggerRefresh
reloadTableViewDataSource
doneLoadingTableViewData
egoRefreshScrollViewDataSourceDidFinishedLoading
[scrollView setContentInset:UIEdgeInsetsMake(0.0f,0.0f, 0.0f,0.0f)];
[selfsetState:EGOOPullRefreshNormal];
[self setState:EGOOPullRefreshLoading];
scrollView.contentInset = UIEdgeInsetsMake(60.0f, 0.0f,0.0f, 0.0f);
[_activityViewstartAnimating];
scrollView.contentInset = UIEdgeInsetsMake(offset, 0.0f, 0.0f,0.0f);