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




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章