我正在使用Grant Paul的PullToRefreshView,并且想知道是否可以在代码中添加didFinishRefreshing方法,以便在完成其操作时可以调用几个事件。我该怎么做呢?
以下是您停止刷新过程的代码:
- (void)finishedLoading {
if (state == PullToRefreshViewStateLoading) {
[UIView animateWithDuration:0.3f animations:^{
[self setState:PullToRefreshViewStateNormal];
}];
}
}
但我不知道从哪里开始。
答案 0 :(得分:1)
尝试实施pullToRefreshViewShouldRefresh
方法,如下所示:
- (void)pullToRefreshViewShouldRefresh:(PullToRefreshView *)view
{
dispatch_async( dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//refresh data source here
dispatch_async(dispatch_get_main_queue(), ^(void) {
//Code here is run when the above is complete
[self.tableView reloadData];
[self.pullView finishedLoading];
//Perform any additional tasks here
});
});
}
其中pullView
是您的PullToRefreshView
个实例。
答案 1 :(得分:0)
刷新是一种视觉效果。当然,你有一个“刷新”的方法,然后在完成后调用'finishedLoading'? 您是否可以使用刷新方法完成所需的操作?
答案 2 :(得分:0)
虽然我喜欢sooper的答案,但在更复杂的场景中(例如,您有不同的视图控制器想要了解可能已在进行中的后台更新),您可以使用notifications。因此,
任何需要了解完成情况的视图控制器(或任何对象)都可以通过addObserver
或addObserverForName
注册通知;
该通知的选择器/块可以执行您需要的刷新指示符的任何结尾;
如果视图不再需要接收通知(例如,您正在解雇它,或其他任何内容),您可以执行removeObserver
;以及
更新过程可以在更新完成后执行postNotificationName
,允许观察者做任何适当的UI更新。
对于简单的情况,这是过度的,但对于更复杂的场景,它是一种有用的模式。