Ios4 核心数据:延迟调用endUpdates,直到出现视图

Ios4 核心数据:延迟调用endUpdates,直到出现视图,ios4,core-data,nsfetchedresultscontroller,Ios4,Core Data,Nsfetchedresultscontroller,我有一个核心数据应用程序,带有一个显示2个视图控制器的选项卡栏控制器。如果我在第一个选项卡的视图控制器中添加了一些内容,它应该显示在第二个选项卡的VC中。两个VCs都基于基于同一实体的NSFetchedResultsController;唯一的区别是一个有谓词,而第二个VC没有 这适用于普通模板,当从第一个VC添加数据时,它会在第二个选项卡中使用controllerWillChangeContent和controllerDidChangeContent立即更新。问题是,如果用户在第一个VC中添加

我有一个核心数据应用程序,带有一个显示2个视图控制器的选项卡栏控制器。如果我在第一个选项卡的视图控制器中添加了一些内容,它应该显示在第二个选项卡的VC中。两个VCs都基于基于同一实体的NSFetchedResultsController;唯一的区别是一个有谓词,而第二个VC没有

这适用于普通模板,当从第一个VC添加数据时,它会在第二个选项卡中使用controllerWillChangeContent和controllerDidChangeContent立即更新。问题是,如果用户在第一个VC中添加或删除任何行,当用户进入第二个选项卡时,他们看不到动画插入或删除的行。。。一切都已经准备好了

在第二个选项卡的VC中,我想做的是延迟调用[self.tableView endUpdates](这会导致动画插入/删除表中的行),直到用户实际转到该选项卡,在该VC的视图中将出现。我试过这个,但似乎不起作用:

- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller
{
        tableviewUpdates = TRUE;
}

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    if (tableviewUpdates) {
        tableviewUpdates = FALSE;
        [self.tableView endUpdates];
    }
}
如果一次添加一行,然后切换到第二个选项卡,则此操作有效,但如果在第一个选项卡中添加多行,然后切换,则此操作无效。
任何帮助都将不胜感激

您的工作与NSFetchedResultsController的目的背道而驰,NSFetchedResultsController的目的是使更新tableview变得自动且轻松

但是,我非常确定,如果覆盖所有FRC委托方法,就可以阻止所有自动更新

您可能需要重新考虑此设计。用户真的希望看到一个视图中的更改在一秒钟内重新执行吗?他们会理解他们正在观看之前更改的回放,还是会直觉地认为应用程序正在自己对数据进行处理


标准UI语法告诉用户,一个更改只需动画一次,然后就可以显示在标准显示中。我建议您在部署这样一个非标准界面之前,先与天真的用户仔细测试这个设计

您的工作与NSFetchedResultsController的目的背道而驰,NSFetchedResultsController的目的是使更新tableview变得自动且轻松

但是,我非常确定,如果覆盖所有FRC委托方法,就可以阻止所有自动更新

您可能需要重新考虑此设计。用户真的希望看到一个视图中的更改在一秒钟内重新执行吗?他们会理解他们正在观看之前更改的回放,还是会直觉地认为应用程序正在自己对数据进行处理


标准UI语法告诉用户,一个更改只需动画一次,然后就可以显示在标准显示中。我建议您在部署这样一个非标准界面之前,先与天真的用户仔细测试这个设计

谢谢你的反馈。我不知道。。。我觉得如果用户在VC1中做了一系列更改,然后转到VC2,那么他们就失去了这些更改发生的所有上下文。因为它是基于日期的,所以所有的更改都可以在VC2中交错进行,如果它没有动画,他们将看不到最近的更改,因为它们符合列表的要求。有了动画,给用户提供上下文就更容易了。你可能有一个合理的理由做出决定,但要小心。我能想到的一个问题是,如果用户在VC1中进行了大量更改,当他们切换到VC2时,他们将不得不等待动画完成,然后才能执行任何操作。在我的用户测试中,用户注意到任何超过2秒的延迟,并开始感觉应用程序运行缓慢,甚至挂起5秒。要想发挥作用,你必须以足够慢的速度运行动画,以便用户能够跟踪它们,但如果动画有很多更改,这将变得很乏味。谢谢你的反馈。我不知道。。。我觉得如果用户在VC1中做了一系列更改,然后转到VC2,那么他们就失去了这些更改发生的所有上下文。因为它是基于日期的,所以所有的更改都可以在VC2中交错进行,如果它没有动画,他们将看不到最近的更改,因为它们符合列表的要求。有了动画,给用户提供上下文就更容易了。你可能有一个合理的理由做出决定,但要小心。我能想到的一个问题是,如果用户在VC1中进行了大量更改,当他们切换到VC2时,他们将不得不等待动画完成,然后才能执行任何操作。在我的用户测试中,用户注意到任何超过2秒的延迟,并开始感觉应用程序运行缓慢,甚至挂起5秒。要想发挥作用,您必须以足够慢的速度运行动画,以便用户能够跟踪它们,但如果动画有很多更改,这将变得单调乏味。