0

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

这是您调用以停止刷新过程的代码:

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

但我不知道从这里去哪里。

4

3 回答 3

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实例在哪里。

于 2012-12-09T22:58:35.903 回答
0

虽然我喜欢 sooper 的回答,但在更复杂的情况下(例如,您有不同的视图控制器希望被告知可能已经在进行的后台更新),您可以使用通知。因此,

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

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

  • 如果视图不再需要接收通知(例如,您正在关闭它,或其他),您可以执行removeObserver;和

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

这对于简单的情况来说是多余的,但对于更复杂的情况来说,它是一个有用的模式。

于 2012-12-10T04:11:15.160 回答
0

拉动刷新只是视觉上的事情。当然,您有一个“刷新”事物的方法,然后在完成后调用“finishedLoading”?你不能使用完成你的刷新方法来做你需要的事情吗?

于 2012-12-09T23:03:36.760 回答