EGORefreshTableHeaderView

EGORefreshTableHeaderView

我试图强制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 的出色工作!)

09-07 15:06