方法很簡單:
- (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
以上所述是小編給大家介紹的IOS中UITableView滾動到指定位置,希望對大家有所協助,如果大家有任何疑問請給我留言,小編會及時回複大家的。在此也非常感謝大家對雲棲社區網站的支援!