[英]How to programmatically force EGORefreshTableHeaderView to update
我试图强制EGORefreshTableHeaderView
从代码更新。 当我下拉时,一切都很完美, TableView
(root)会刷新。 但我有一个模态视图,用户可以在其中订阅某些实体。 当他订阅一个时,第一个(根)表视图中的重载方法被触发。 此方法建立与服务器的连接,根据订阅加载某些特定数据,将其存储在CoreData DB
并更新TableView
(root)。
问题是当用户仅连接到3G或Edge网络时,在自己的线程中处理的下载可能需要几秒钟。 为了表明用户发生了什么事,我想展示EGORefreshTableHeaderView
。
我发现我可以设置刷新视图的缩进并手动显示加载图标,但我想知道是否通过触发EGORefreshTableHeaderView
上的委托或方法没有更简单的解决方案?
你尝试过使用egoRefreshScrollViewDataSourceStartManualLoading
吗?
假设您的EGORefreshTableHeaderView
实例名为_refreshTableHeaderView,那么调用如下:
[_refreshTableHeaderView egoRefreshScrollViewDataSourceStartManualLoading:self.tableView];
对我有用......
所以,自从我使用它以来已经太久了,我忘了我自己应用了这个改变......
我修改了EGORefreshTableHeaderDelegate
(在EGORefreshTableHeaderView.h
声明)来添加这个附加协议:
- (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了伟大的工作!)
感谢Reuven和他的代码,我对它进行了一些改进,它也可以用在屏幕较大的UIScrollView中。 此外,我已将已弃用的commitAnimations
更改为阻止动画。
#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];
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.