0

最初のトリガーは問題なく動作しますが、その後引き下げようとすると、まだロード中と表示されます。

これが私のUITableViewControllerの簡単なコード例です:

- (void)viewDidLoad
{
    [super viewDidLoad];

    __weak StoresViewController * bSelf = self;
    [self.tableView addPullToRefreshWithActionHandler:^{
        [bSelf callStoresService];
    }];
    [self.tableView triggerPullToRefresh];
}

- (void)callStoresService {
    [self.tableView.pullToRefreshView stopAnimating];
}

ブレークポイントを追加すると、[self.tableView.pullToRefreshView stopAnimating];二度と呼び出されないことがわかります...

ほぼ同じコードで動作する古いプロジェクトがあります...ここに欠けているものはありますか?

4

1 に答える 1

0

私は iOS 6 向けにしか開発していないので、ネイティブ リフレッシュを使用することにしました。

私のviewDidLoadで:

// managing pullToRefresh
UIRefreshControl *refresh = [[UIRefreshControl alloc] init];
refresh.attributedTitle = [[NSAttributedString alloc] initWithString:@"Pull down to refresh"];
[refresh addTarget:self action:@selector(refreshView:) forControlEvents:UIControlEventValueChanged];
self.refreshControl = refresh;
[self refreshView:refresh];
[self.refreshControl beginRefreshing];

次に、refreshView メソッドを作成します。

-(void)refreshView:(UIRefreshControl *)refresh {
    refresh.attributedTitle = [[NSAttributedString alloc] initWithString:@"Refreshing..."];
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"dd/MM HH:mm:ss"];

    // do what you need

    NSString *lastUpdated = [NSString stringWithFormat:@"Last update: %@", [formatter stringFromDate:[NSDate date]]];
    refresh.attributedTitle = [[NSAttributedString alloc] initWithString:lastUpdated];
}

[refresh endRefreshing];終わったら電話するのを忘れないで

于 2013-03-05T21:15:59.753 に答える