2011-11-28 101 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。