Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何以编程方式强制更新EGORefreshTableHeaderView_Iphone_Objective C_Ios_Uitableview_Refresh - Fatal编程技术网

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

Iphone 如何以编程方式强制更新EGORefreshTableHeaderView,iphone,objective-c,ios,uitableview,refresh,Iphone,Objective C,Ios,Uitableview,Refresh,我试图强制egoreshTableHeaderView从代码更新。当我下拉时,一切工作正常,TableView(root)得到刷新。但是我有一个模式视图,用户可以订阅某些实体。当他订阅一个表时,会触发第一个(根)表视图中的重载方法。此方法建立与服务器的连接,根据订阅加载一些特定数据,将其存储在coredatadb中,并更新TableView(根目录) 问题是,当用户仅连接到3G或边缘网络时,在自己的线程中处理的下载可能需要几秒钟。为了向用户指出发生了什么,我想显示EGORefreshTableH

我试图强制
egoreshTableHeaderView
从代码更新。当我下拉时,一切工作正常,
TableView
(root)得到刷新。但是我有一个模式视图,用户可以订阅某些实体。当他订阅一个表时,会触发第一个(根)表视图中的重载方法。此方法建立与服务器的连接,根据订阅加载一些特定数据,将其存储在
coredatadb
中,并更新
TableView
(根目录)

问题是,当用户仅连接到3G或边缘网络时,在自己的线程中处理的下载可能需要几秒钟。为了向用户指出发生了什么,我想显示
EGORefreshTableHeaderView


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

您是否尝试使用
egoRefreshScrollViewDataSourceStartManualLoading

假设您的
egoreshTableHeaderView
实例名为_refreshtTableHeaderView,则调用如下:

[_refreshTableHeaderView egoRefreshScrollViewDataSourceStartManualLoading:self.tableView];
为我工作


所以,我已经很久没有用这个了,我忘了我自己应用了这个改变

我修改了
egoreshtableheaderdelegate
(在
egoreshtableheaderview.h
中声明)以添加此附加协议:

- (void)egoRefreshScrollViewDataSourceStartManualLoading:(UIScrollView *)scrollView;
以及实现(在
egoreshTableHeaderView.m
中):

如果你需要更多的帮助,请告诉我


(还要感谢诺梅格公司所做的伟大工作!)

多亏了鲁文和他的代码,我对它做了一点改进,它还可以在屏幕一样大的UIScrollView中使用。此外,我已将不推荐的
提交动画
更改为阻止动画

#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];
    }
}

根据[1],没有像您上面提到的那样的方法?也许你已经自己实现了?你能告诉我密码吗?[1] ... 非常感谢。我也尝试过类似的方法,但你的效果更好。此外,我还重写了动画以阻止动画,因为commitAnimations从iOS5开始就被弃用了。但不管怎样:谢谢!:)嗯。。。我发现当TableView的高度由更多的单元格组成时,它不起作用。然后会触发RefreshView,但不会显示,因为用户必须向上滚动才能看到它。你有什么建议吗/我已经发现了。如果有人需要,请参阅下面的答案。
#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];
    }
}