2012-04-22 557 views
39

我要讓未來:的UITableView移動到細胞

我有要dispaly字(A-Z)的UITableView的。

目前在視圖做負載我有一個顯示單元(這是正確的)。第一個單元格顯示我陣列單詞中的第一個單詞

目的: 我想要移動到了必須從我的陣列顯示10個字的電池,但問題是,與indexPath.row細胞= 10不存在(這是正確的,因爲我還不滾動)。

什麼是正確的等待,使過渡,從1到10的細胞。

我想,如果我不爲我創造我的細胞能做到這一點,解決我的問題,請使用dequeueReusableCellWithIdentifier,但我的意思是這個問題的設備內存。

換句話說,我需要做scrollToRowAtIndexPath

謝謝!

回答

81

你是正確的識別方法scrollToRowAtIndexPath。因此,所有你需要做的是建立與行新IndexPath要移動到,例如,行索引= 10:

[tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:10 inSection:indexPath.section] 
      atScrollPosition:UITableViewScrollPositionMiddle animated:NO]; 
+0

感謝響應,但我怎麼能在滾動那個indexPath不存在了嗎? – 2012-04-22 22:07:48

+0

我現在想知道我是否理解你的原始問題。據我所知,你的桌子可能有很多單元格,例如100個,但一次只能看到大約10個單元格。儘管內存中沒有100個實際的行(由於單元重用),但編程方式滾動到尚不可見的行仍然很好。例如,第50行。 – arooaroo 2012-04-23 17:23:43

+0

再次感謝。現在我已經解決了這個問題,但帶有動畫效果的scrollToRowAtIndexPath不起作用。因此,如果動畫YES everething運作良好。 – 2012-04-25 16:02:21

4
//For iOS 7 
     [self.TableView reloadData]; 
     NSIndexPath *indexPath = [NSIndexPath indexPathForRow:1 inSection:1]; 
     [TableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionTop animated:YES]; 
1

一個可識別的行(在例如,它下面是。 forRow)需要顯示並重新加載行。完成後,可以滾動到該行。

let moveToIndexPath = NSIndexPath(forRow: forRow, inSection: 0) 
self.tableView.reloadRowsAtIndexPaths([moveToIndexPath], withRowAnimation: .None) 
self.tableView.scrollToRowAtIndexPath(moveToIndexPath, atScrollPosition: atScrollPosition, animated: true)