EGOTableViewPullRefresh-master(下拉刷新)过程的理解

EGOTableViewPullRefresh:点击打开链接https://github.com/enormego/EGOTableViewPullRefresh

RootViewController.m中的

//EGORefreshTableHeaderView *view接到tableview的上面,所以坐标是(0-460320460),这样下拉出来的就是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);




  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值