[英]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.