【发布时间】:2011-07-07 19:40:05
【问题描述】:
我有一个带有标签栏控制器的 Core Data 应用程序,它显示 2 个视图控制器。如果我在第一个选项卡的视图控制器中添加一些东西,它应该显示在第二个选项卡的 VC 中。两个 VC 都基于基于同一实体的 NSFetchedResultsController;唯一的区别是一个有谓词而第二个 VC 没有。
这适用于普通模板,当从第一个 VC 添加数据时,它会在第二个选项卡中使用 controllerWillChangeContent 和 controllerDidChangeContent 立即更新。问题是,如果用户在第一个 VC 中添加或删除任何行,当用户来到第二个选项卡时,他们看不到动态插入或删除的行......一切都已经存在了。
在第二个选项卡的 VC 中,我想做的是延迟调用 [self.tableView endUpdates](这会导致表中的行的动画插入/删除),直到用户实际转到该选项卡,在那个VC的viewWillAppear。我试过了,但似乎不起作用:
- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller
{
tableviewUpdates = TRUE;
}
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
if (tableviewUpdates) {
tableviewUpdates = FALSE;
[self.tableView endUpdates];
}
}
如果一次添加一行然后切换到第二个选项卡,则此方法有效,但如果我在第一个选项卡中添加多行然后切换,则无效。 任何帮助,将不胜感激。
【问题讨论】:
标签: ios4 core-data nsfetchedresultscontroller