2017-10-19 7 views
0

UIRefreshControlを実装したUITableViewControllerを使用して、サーバからのデータをリフレッシュするデバッグからリフレッシュメソッドが呼び出され、新しい正しいデータがダウンロードされますが、UITableViewControllerはこれを反映していません。UIRefreshControlを使用するとUITableViewControllerが更新されないのはなぜですか?

私はのUITableViewControllerを閉じて再度開くと、正しいデータが私のリフレッシュコードはあなたが新しいデータを持っていたら、あなたのテーブルビューを再ロードする責任があり、この

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    UIRefreshControl *refresh = [[UIRefreshControl alloc] init]; 

    refresh.attributedTitle = [[NSAttributedString alloc] initWithString:@"Pull to Refresh"]; 

    [refresh addTarget:self action:@selector(updateData) 

    forControlEvents:UIControlEventValueChanged]; 

    self.refreshControl = refresh; 
} 

- (void) updateData { 

    [ShopifyWebServices fetchAllProductsInCollection:shopifyCollectionTitle]; 

    [self performSelector:@selector(stopRefresh) withObject:nil afterDelay:5]; 
} 

- (void)stopRefresh { 

    [self.refreshControl endRefreshing]; 

} 
+0

テーブルビューのデータを管理するために、私はこれを試してみましたが、私は中に出てと戻っていない限り、それはまだ更新されませんテーブルビュー –

答えて

2

のように見えます

示されています。リフレッシュコントロールは、トリガされたことを伝える以外に何もしません。

fetchAllProductsInCollectionの後に何らかの種類のデリゲートメソッドまたは補完ブロックがあり、それがendRefreshingを呼び出してテーブルデータを再ロードする必要がある場所です。

+0

のreloadData関数を使用する必要があります - (無効)にupdateData { [ShopifyWebServices fetchAllProductsInCollection:shopifyCollectionTitle]; [self performSelector:@セレクタ(stopRefresh)withObject:nil afterDelay:5]; [self.tableView reloadData]; } –

+0

データソースなどを接続できなかった可能性はありますか? –

+0

そのコードはすぐにデータをリロードします。 '[self.tableView reloadData];を' stopRefresh'メソッドに置いてもうまくいくかもしれませんが、フェッチが終わったときに実際にやっているのではなく、5秒待っています。あなたがデータソースに接続していなかったら、それは決してうまくいかないでしょう。 – jrturton

関連する問題