2011-03-08 88 views
9

我正在重新加載我的表格視圖中的一些單元格。重新加載完成後,我想滾動以便它們可見。我知道scrollToRowAtIndexPath:atScrollPosition:方法。但是我需要在重裝完成後調用它,因爲重裝會改變行高。當UITableView刷新完成後有可能獲得回調嗎?

這裏有一些相關的問題,但他們不完全回答我的問題。
UITableView , Scroll to bottom on reload?
How to Start UITableView on the Last Cell

編輯 - 我重裝不插入或刪除任何行。相反,我正在重新加載一個或多個單元以反映更新的信息。

+0

http://stackoverflow.com/questions/5112346/uitableview-scroll-to-bottom-on-reload – Sanniv 2012-12-31 05:39:40

+0

http://stackoverflow.com/questions/16071503/how-to-tell-when- UITableView中,已完成的,reloaddata – hariszaman 2016-01-04 16:52:30

回答

0

這裏有一些哈克的方式,你可以做到這一點:

1)當你調用reloadData,你的cellForRowAtIndexPath:委託功能每一個可見的細胞將被調用一次。您可以對這些進行計數,然後在函數調用足夠多的次數後觸發一個操作。

2)我敢打賭,其他一些UITableViewDelegate函數也以確定性的方式被調用。也許你可以在其中的一箇中調用你的刷新函數,也許延遲一小會兒。 3)你也可以使用performSelector:withObject:afterDelay:after [tableView reloadData]並使用一些硬編碼的延遲。

-3

不是一個理想的解決方案,但我已經得到解決這個使用UIView動畫和相應的完成回調。我把它放在一個UITableView類別中。按照您的預期工作。

- (void)reloadDataWithCompletion:(void (^)(BOOL finished))completion { 
    [UIView animateWithDuration:0.33 animations:^(){ 
    [self reloadData]; 
    }completion:completion]; 
}