UITableView を使用するプロジェクトに UIRefreshControl の機能を追加しました。このアプリは、Web サービスからテーブルビューにエントリをフェッチすることによって機能します。以下は、UIRefreshControl を追加するために使用したコードです。
- (void)viewDidLoad
{
[super viewDidLoad];
UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
refreshControl.tintColor = [UIColor grayColor];
refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@"Updating New Entries"];
[refreshControl addTarget:self action:@selector(pullToRefresh) forControlEvents:UIControlEventValueChanged];
self.refreshControl = refreshControl;
[self pullToRefresh];
}
- (void) pullToRefresh
{
counter = 1;
[self fetchEntriesNew:counter]; // My code for updating table view
[self performSelector:@selector(updateTable) withObject:nil afterDelay:2];
}
- (void)updateTable
{
[self.tableView reloadData];
[self.refreshControl endRefreshing];
}
プルして更新すると、新しいエントリがあれば追加して更新され、テーブルビューの上に次のビューが表示されます。
アプリを初めて起動または開いたときを除いて、すべてがうまく機能します。テーブルビューは更新されますが、上の画像で示したビューは表示されません。リフレッシュするたびにリフレッシュコントロールビューを表示したい。誰かが私が間違っていることを指摘できますか? ありがとう!
更新: [self refreshControl beginRefreshing] を追加し、UIRefreshControl のスピナー ビューが表示されるようになりましたが、テーブルビューの最初のエントリの上にあります。誰でもそれを修正する方法を指摘できますか?