如何以编程方式强制EGORefreshTableHeaderView更新

Chr*_*ris 4 iphone refresh objective-c uitableview ios

我试图强制EGORefreshTableHeaderView从代码更新.当我拉下来时,一切都很完美,TableView(根)得到刷新.但我有一个模态视图,用户可以在其中订阅某些实体.当他订阅一个时,第一个(根)表视图中的重载方法被触发.此方法建立与服务器的连接,根据订阅加载某些特定数据,将其存储在a中CoreData DB并更新TableView(root).

问题是当用户仅连接到3G或Edge网络时,在自己的线程中处理的下载可能需要几秒钟.为了表明用户发生了什么事,我想展示一下EGORefreshTableHeaderView.

我发现我可以设置刷新视图的缩进并手动显示加载图标,但我想知道是否通过触发委托或方法没有更简单的解决方案EGORefreshTableHeaderView

Reu*_*ven 9

你尝试过使用过egoRefreshScrollViewDataSourceStartManualLoading吗?

假设您的EGORefreshTableHeaderView实例名为_refreshTableHeaderView,那么调用如下:

[_refreshTableHeaderView egoRefreshScrollViewDataSourceStartManualLoading:self.tableView];
Run Code Online (Sandbox Code Playgroud)

对我有用......


所以,自从我使用它以来已经太久了,我忘了我自己应用了这个改变......

我修改EGORefreshTableHeaderDelegate(声明EGORefreshTableHeaderView.h)以添加此附加协议:

- (void)egoRefreshScrollViewDataSourceStartManualLoading:(UIScrollView *)scrollView;
Run Code Online (Sandbox Code Playgroud)

并执行(in 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];
    }
}
Run Code Online (Sandbox Code Playgroud)

如果您需要更多帮助,请告诉我.

(与答谢enormego了伟大的工作!)