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);