无论有没有 NSFetchedResults 控制器,这是一个很好的问题——您有一个正在观察模型的表 vc,并且您希望用户在从另一个视图控制器弹出或关闭后看到动画变化。
可能有更好的方法,但我最近在类似情况下所做的事情是让表 vc 根据来自子公司(推送或模态呈现)vc 的委托消息自行更新模型。
因此,在表 vc 中:
AddingVC *addingVC = [[AddingVC alloc] initWithDelegate:self];
[self presentModalViewController:addingVC animated:YES];
// adding to the model will happen in this vc, based on a delegate message
- (void)addingVcDidCreateAnObjectToAdd:(id)objectToAdd {
// add to your model here
}
添加 vc 可以做到这一点(我对此并不完全感到自豪,但它确实有效)......
- (void)thingIsReadyToAdd {
SEL selector = @selector(addingVcDidCreateAnObjectToAdd:);
[self.delegate performSelector:selector withObject:objectToAdd afterDelay:1.5];
// 1.5 is on the long side, since the vc transition is about 0.5, so 1.0 is okay
}
在我的例子中,我使用了一个更传统的委托协议,将addingVC作为第一个参数传递,但是这样做有延迟需要一个冗长的NSInvocation,所以我在这里跳过它。+1 也解决了困扰我的问题。我很好奇其他人的解决方案。