IOS學習之UITableView滾動到指定位置


IOS學習之UITableView滾動到指定位置

方法很簡單:

- (void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated

 

有些需要注意的地方:

如果在reloadData后需要立即獲取tableview的cell、高度,或者需要滾動tableview,那么,直接在reloadData后執行代碼是有可能出問題的。

reloadDate並不會等待tableview更新結束后才返回,而是立即返回,然后去計算表高度,獲取cell等。

如果表中的數據非常大,在一個run loop周期沒執行完,這時,需要tableview視圖數據的操作就會出問題了。

apple並沒有直接提供reloadData的api,想要程序延遲到reloadData結束在操作,可以用以下方法:

方法一:

[self.tableView reloadData];
[self.tableView layoutIfNeeded];
//刷新完成

方法二:

[self.tableView reloadData];
dispatch_async(dispatch_get_main_queue(), ^{
    //刷新完成
});

reloadDate會在主隊列執行,而dispatch_get_main_queue會等待機會,直到主隊列空閑才執行。

類似函數:

- (void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated;

- (void)scrollToNearestSelectedRowAtScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated;

- (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated;  // animate at constant velocity to new offset

- (void)scrollRectToVisible:(CGRect)rect animated:(BOOL)animated;

當使用[tableView reloadData];刷新數據時,不能直接在后面使用上面的函數。reload

 

 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM