2011-08-12 99 views
22

我有一個UITableView。我想根據所做的選擇來更新表格數據。現在我使用[mytable reloadData];我想知道是否有任何方法可以更新所選的特定單元格。我可以通過使用NSIndexPath或其他修改嗎?有什麼建議麼?在iOS中重新加載特定的UITableView單元格

謝謝。

回答

62

對於iOS 3.0及以上版本,你只需要調用:

- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation; 

要重新加載第2排3和例如,第3行第4行,您必須這樣做:

// Build the two index paths 
NSIndexPath* indexPath1 = [NSIndexPath indexPathForRow:3 inSection:2]; 
NSIndexPath* indexPath2 = [NSIndexPath indexPathForRow:4 inSection:3]; 
// Add them in an index path array 
NSArray* indexArray = [NSArray arrayWithObjects:indexPath1, indexPath2, nil]; 
// Launch reload for the two index path 
[self.tableView reloadRowsAtIndexPaths:indexArray withRowAnimation:UITableViewRowAnimationFade]; 
+0

我不熟悉索引路徑。你能否讓我詳細介紹一下。 – pa12

+1

顧名思義,NSIndexPath包含一個索引。索引由2個組件行和部分組成。你可以創建一個[NSIndexPath indexPathForRow:(NSUInteger)inSection:(NSUInteger)]; – Abhinit

+0

每個部分可以有多行。例如,在iPod MP3播放器中,每個字母都有一個部分。每個部分都包含幾位藝術家。 我編輯了我的原始代碼,告訴你如何去做。 – CedricSoubrie

2

我認爲你正在尋找的UITableView這種方法:

- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation 
6

您也可以獲得對UITableViewCell對象並更改它的標籤等。

UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath]; 
cell.textLabel.text = @"Hey, I've changed!"; 
相關問題