2017-10-19 83 views
0

我有一個UITableViewController實現UIRefreshControl刷新服務器的數據,從調試我可以看到刷新方法被調用和新的正確數據下載,但我的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

管理的tableview的數據,你應該使用表格視圖 –

回答

2

您負責重裝表視圖一旦你有新的數據。刷新控件除了告訴你它已被觸發之外不會執行任何操作。

我希望在fetchAllProductsInCollection之後有某種委託方法或完成塊,這就是您應該調用endRefreshing並重新加載表格數據的地方。

+0

的reloadData函數我試過,但它仍然不會刷新,除非我走出去,回來 - (空)了updateData { [ShopifyWebServices fetchAllProductsInCollection:shopifyCollectionTitle]。 [self performSelector:@selector(stopRefresh)withObject:nil afterDelay:5]; [self.tableView reloadData]; } –

+0

是否有可能我錯過了連接數據源或其他東西? –

+0

該代碼將立即重新加載數據。如果你在你的'stopRefresh'方法中加入'[self.tableView reloadData];'它可能會工作,但你仍然只是等待5秒鐘,而不是在提取完成時實際執行它。如果你沒有連接數據源,那麼它將無法工作。 – jrturton

相關問題