我有一个基于UITableView
的{{1}}。要在表中插入一个新行,我打开一个模态视图控制器,然后我点击保存按钮,它取消模态视图并导致我的NSFetchedResultsController
委托方法(willChangeContent,didChangeObject`等)被触发,它动画插入一个新的细胞。一切都很好,但我希望用户见证这个动画,当模态视图消失时,动画已经完成。
如何在模态视图完全消失之前延迟此动画,以便用户可以看到动画?
答案 0 :(得分:1)
这是一个很好的问题,有或没有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
}
在我的情况下,我使用了一个更传统的委托协议,将addsVC作为第一个参数传递,但是延迟这样做需要一个详细的NSInvocation,所以我在这里跳过它。对于那个困扰我的问题也是+1。我很好奇别人的解决方案。