0

私はGrantPaulによる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の答えが好きですが、より複雑なシナリオ(たとえば、すでに進行中の可能性があるバックグラウンド更新についてさまざまなView Controllerに通知したい場合)では、通知を使用できます。したがって、

  • 完了について知る必要のある任意のViewController(または任意のオブジェクト)は、を介して、addObserverまたはを介して通知に登録できaddObserverForNameます。

  • その通知のセレクター/ブロックは、必要な更新インジケーターの終了を実行できます。

  • ビューが通知を受信する必要がなくなった場合(たとえば、ビューを閉じるなど)、実行できますremoveObserver。と

  • 更新プロセスはpostNotificationName、更新が完了したときにを実行できるため、オブザーバーは適切なUI更新を実行できます。

これは単純な状況ではやり過ぎですが、より高度なシナリオでは便利なパターンです。

于 2012-12-10T04:11:15.160 に答える
0

更新するためのプルは、単なる視覚的なものです。確かに、「更新」するメソッドがあり、それが完了したら「finishedLoading」を呼び出しますか?必要なことを行うためにrefreshメソッドの完了を使用できませんか?

于 2012-12-09T23:03:36.760 に答える