2011-11-28 162 views
0

在另一個問題中,它被告知只重新加載所需的UITableViewCells而不是整個表。如何重新加載UITableViewCell

這是怎麼做到的。我必須說,目前我有點無知,因爲我的自定義單元格不是「直接」綁定到tableView。我在cellForRowAtIndexPath方法中實例化它們。

//default 
     static NSString *CellIdentifier = @"Cell"; 

     TwoRowCell *cell = (TwoRowCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
     if (cell == nil) { 

      NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"TwoRowCell" owner:self options:nil]; 
      cell = (TwoRowCell *)[nib objectAtIndex:0]; 
     } 

     // Configure the cell... 

     cell.title.text = [dict objectAtIndex:indexPath.row]; 
     cell.value.text = @""; 

     return cell; 

我該如何訪問單元並重新加載單元格。想法:有一些委託方法,並在那裏更新單元格重新加載單元格。目前我重新加載整個表格。

BR, mybecks

回答

2

只要打電話reloadData你的桌子上 - 在不重新加載整個表,它只是重新加載是(或者更準確地說應該成爲)可見細胞。

您的單元格與表格直接相關,而cellForRowAtIndexPath是橋樑 - 系統調用以確定如何顯示單元格。例如,在滾動時多次調用此方法。

在過去的一種情況下,我調用reloadRowsAtIndexPaths只重載一個(或多個)特定單元。在這種情況下,我在單元上有一個按鈕,我想在點擊一次後禁用按鈕。

2

如果您的部分數據發生變化,您可以撥打- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animationUITableView重新加載此UITableViewcell。它會再次調用cellForRowAtIndexPath。