簡體   English   中英

如何以編程方式強制EGORefreshTableHeaderView更新

[英]How to programmatically force EGORefreshTableHeaderView to update

我試圖強制EGORefreshTableHeaderView從代碼更新。 當我下拉時,一切都很完美, TableView (root)會刷新。 但我有一個模態視圖,用戶可以在其中訂閱某些實體。 當他訂閱一個時,第一個(根)表視圖中的重載方法被觸發。 此方法建立與服務器的連接,根據訂閱加載某些特定數據,將其存儲在CoreData DB並更新TableView (root)。

問題是當用戶僅連接到3G或Edge網絡時,在自己的線程中處理的下載可能需要幾秒鍾。 為了表明用戶發生了什么事,我想展示EGORefreshTableHeaderView

我發現我可以設置刷新視圖的縮進並手動顯示加載圖標,但我想知道是否通過觸發EGORefreshTableHeaderView上的委托或方法沒有更簡單的解決方案?

你嘗試過使用egoRefreshScrollViewDataSourceStartManualLoading嗎?

假設您的EGORefreshTableHeaderView實例名為_refreshTableHeaderView,那么調用如下:

[_refreshTableHeaderView egoRefreshScrollViewDataSourceStartManualLoading:self.tableView];

對我有用......


所以,自從我使用它以來已經太久了,我忘了我自己應用了這個改變......

我修改了EGORefreshTableHeaderDelegate (在EGORefreshTableHeaderView.h聲明)來添加這個附加協議:

- (void)egoRefreshScrollViewDataSourceStartManualLoading:(UIScrollView *)scrollView;

和實現(在EGORefreshTableHeaderView.m ):

- (void)egoRefreshScrollViewDataSourceStartManualLoading:(UIScrollView *)scrollView {
    [self setState:EGOOPullRefreshLoading];

    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.2];
    scrollView.contentInset = UIEdgeInsetsMake(60.0f, 0.0f, 0.0f, 0.0f);
    [UIView commitAnimations];

    if ([_delegate respondsToSelector:@selector(egoRefreshTableHeaderDidTriggerRefresh:)]) {
        [_delegate egoRefreshTableHeaderDidTriggerRefresh:self];
    }
}

如果您需要更多幫助,請告訴我。

(與答謝enormego了偉大的工作!)

感謝Reuven和他的代碼,我對它進行了一些改進,它也可以用在屏幕較大的UIScrollView中。 此外,我已將已棄用的commitAnimations更改為阻止動畫。

#pragma mark - Manually refresh view update
- (void)egoRefreshScrollViewDataSourceStartManualLoading:(UIScrollView *)scrollView {
    [self.refreshHeaderView setState:EGOOPullRefreshLoading];

    //animating pull down scroll view
    [UIView animateWithDuration:0.2
                     animations:^{ 
                         scrollView.contentInset = UIEdgeInsetsMake(60.0f, 0.0f, 0.0f, 0.0f); 
                         scrollView.contentOffset = CGPointMake(0, -60.0f);
                     }
     ];

    //triggering refreshview regular refresh
    if ([self.tableView.delegate respondsToSelector:@selector(egoRefreshTableHeaderDidTriggerRefresh:)]) {
        [self egoRefreshTableHeaderDidTriggerRefresh:self.refreshHeaderView];
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM