2

我有一个显示底层 NSFetchedResultsController 的 UITableView。

当 fetchedResultsController 更新时,

- (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type newIndexPath:(NSIndexPath *)newIndexPath {

叫做。并执行以下操作:

  case NSFetchedResultsChangeInsert:
   [tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:shiftedIndexPath] withRowAnimation:UITableViewRowAnimationFade];
   break;

只为新行调用 cellForRowAtIndexPath(这是合乎逻辑的)

然而,问题是表格视图的行中显示的所有值都被向下移动。第一行显示其标题。第二行显示第一行的标题。第三行第二行的标题等。如果我重复一遍,第三行将显示第二行的标题,第四行将显示第三行的标题等。

我不明白会发生什么,特别是因为 cellForRowAtIndexPath 只为新行调用(这是合乎逻辑的)而不是所有这些行。此外,如果我单击这些标题错误的行,它会打开正确的文档(didSelectRowAtIndexPath 与 indexPath 一起正常工作)

有什么可能发生的线索吗?谢谢!

4

2 回答 2

0

不好说,如果您的更改需要对 TableView 中可用的所有行产生影响,那么您肯定需要调用 [tableView reloadData]

于 2010-06-17T07:59:10.337 回答
0

导致调用委托方法的代码是什么?请编辑您的答案并添加该代码,以便我们可以看到此事件的完整生命周期。

于 2010-06-14T16:31:31.463 回答