iOS PullToRefreshView,添加didFinishRefreshing方法

时间:2012-12-09 19:42:26

标签: ios uitableview uiview

我正在使用Grant Paul的PullToRefreshView,并且想知道是否可以在代码中添加didFinishRefreshing方法,以便在完成其操作时可以调用几个事件。我该怎么做呢?

以下是您停止刷新过程的代码:

- (void)finishedLoading {
    if (state == PullToRefreshViewStateLoading) {
        [UIView animateWithDuration:0.3f animations:^{
            [self setState:PullToRefreshViewStateNormal];
        }];
    }
}

但我不知道从哪里开始。

3 个答案:

答案 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。因此,

  • 任何需要了解完成情况的视图控制器(或任何对象)都可以通过addObserveraddObserverForName注册通知;

  • 该通知的选择器/块可以执行您需要的刷新指示符的任何结尾;

  • 如果视图不再需要接收通知(例如,您正在解雇它,或其他任何内容),您可以执行removeObserver;以及

  • 更新过程可以在更新完成后执行postNotificationName,允许观察者做任何适当的UI更新。

对于简单的情况,这是过度的,但对于更复杂的场景,它是一种有用的模式。