uitableview - 在NSFetchedResultsChangeUpdate之后,更新单元格内的值

  显示原文与译文双语对照的内容

我有一个 tableview,我使用NSFetchedResultsController将它链接到核心数据。 我有一个方法 updateCellAtIndexPath,我正在使用它来更新单元格文本标签。 我将这里方法从 tableView:cellForRowAtIndexPath:indexPath 那很正常。


-(UITableViewCell *)updateCellAtIndexPath:(NSIndexPath *)indexPath
{
 static NSString *CellIdentifier = @"TripCell";
 UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; 
 Trip *trip = [_controller objectAtIndexPath:indexPath]; 
 cell.textLabel.text= [NSString stringWithFormat:@"%@", trip.name ]; 
 return cell;
}

更新核心数据对象时收到NSFetchedResultsChangeUpdate并调用 updateCellAtIndexPath 。 问题是单元格文本标签没有正确更新到实际值。 我认为这个手机没有重新装载,因为如果我改变 updateCellAtIndexPath的话, reloadRowsAtIndexPaths:withRowAnimation:


-(void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type newIndexPath:(NSIndexPath *)newIndexPath
{
 switch (type){ 
 case NSFetchedResultsChangeUpdate:
//works [self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone]; 
//not works [self updateCellAtIndexPath:indexPath];
 break;
 default:
 break;
 }
}

但是当我阅读文档时 reloadRowsAtIndexPaths:withRowAnimation: ,表示,如果只想更新值,则不应该使用这里方法:

如果要提醒用户单元格的值正在更改,请调用这里方法。 但是,通知用户并不是 important—that,只需要更改单元格的displaying—you可以获取特定行的单元格。

为什么我不能使用 updateCellAtIndexPath 更新单元格文本标签?

时间: 作者:

你的updateCellAtIndexPath: 方法创建一个新的单元格,而不是更新现有的。 如果从 cellForRowAtIndexPath 调用,但从委托方法调用时,这是可以的。

如果你实现并使用"标准""


- (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath

在Xcode中使用( 主细节+ 核心数据) 模板创建新应用时,你可以找到 比如 。

作者:
...