我试图强制EGORefreshTableHeaderView
从代码更新。当我下拉列表时,一切工作正常,并且TableView
(根)得到刷新。但是我有一个模态视图,用户可以在其中订阅某些实体。当他订阅一个时,将触发第一个(根)表 View 中的reload方法。此方法建立与服务器的连接,根据订阅加载一些特定的数据,将其存储在CoreData DB
中,然后更新TableView
(根)。
问题在于,当用户仅连接到3G或Edge网络时,在自己的线程中处理的下载可能需要花费几秒钟的时间。为了指示用户发生了某些事情,我想显示EGORefreshTableHeaderView
。
我发现可以设置刷新 View 的缩进量并手动显示加载图标,但是我想知道是否仅通过触发EGORefreshTableHeaderView
上的委托(delegate)或方法是否没有更简单的解决方案?
最佳答案
您尝试使用egoRefreshScrollViewDataSourceStartManualLoading
吗?
假设您的EGORefreshTableHeaderView
实例名为_refreshTableHeaderView,则调用如下:
[_refreshTableHeaderView egoRefreshScrollViewDataSourceStartManualLoading:self.tableView];
为我工作...
所以,自从我使用它以来已经太久了,我忘记了自己应用更改...
我修改了
EGORefreshTableHeaderDelegate
(在EGORefreshTableHeaderView.h
中声明)以添加此附加协议(protocol):- (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 的出色工作!)