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