次のコードを使用して UIRefreshControl を作成しています。
- (void) viewDidLoad
{
[super viewDidLoad];
UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
[refreshControl addTarget:self action:@selector(doLoad) forControlEvents:UIControlEventValueChanged];
self.refreshControl = refreshControl;
}
- (void) doLoad
{
dispatch_async(dispatch_get_global_queue(0, 0), ^{
// Instead of sleeping, I do a webrequest here.
[NSThread sleepForTimeInterval: 5];
dispatch_async(dispatch_get_main_queue(), ^{
[tableView reloadData];
[self.refreshControl endRefreshing];
});
});
}
それはうまくいきます。ビューに移動してテーブルをドラッグすると、コードが実行され、データが表示されます。
しかし、私がやりたいことは、ビューが表示されるとすぐに「読み込み中」の状態にすることです (そのようにして、ユーザーは何かが起こっていることを知ることができます)。私は以下を追加しようとしました:
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
[self.refreshControl beginRefreshing];
}
しかし、うまくいかないようです。ビューに移動すると、通常のビューのように見えます (更新コントロールは表示されません)。さらに、更新コントロールをプルしようとすると、読み込みが完了しません。
明らかに、私はこれについて間違った方法で進んでいます。これをどのように処理すべきかについての提案はありますか?