我有一堆UIViewController
子类。每个修改NSManagedObject
模型。他们中的许多人也提出了他们自己的模态视图控制器。
当用户'弹出'视图控制器或推送下一个视图控制器时,我需要保存对NSManagedObjectContext
的更改。
目前,我正在隐藏默认后退按钮并使用UIBarButtonItem
target
和自定义self
设置我自己的action
。
这没关系,但理想情况下,我想使用默认的后退按钮并在弹出之前运行代码。有没有办法在pop之前运行我自己的代码?
(我不希望将代码放入viewWillDisappear
,因为持久存储到磁盘可能很昂贵,而且这种方法也可以由视图控制器显示的模式触发。)可以这样做吗?
答案 0 :(得分:4)
您可以在viewDidDisappear
中检查self
是否为1)self.navigationController.viewControllers
中的第二个最后一个元素后执行此操作(下一个VC的情况)刚被推或)2)self.navigationController
是nil
(self
VC刚刚弹出)。
答案 1 :(得分:1)
是..导航控制器有一个委托,指示何时弹出或推动视图控制器..您可以使用它来执行任务...
答案 2 :(得分:0)
在代码中添加以下方法:
- (void) viewWillDisappear:(BOOL)animated{
//your code here
}
答案 3 :(得分:0)
我使用viewWillDissappear进行持续的任何更改。 如果需要,我使用viewWillAppear来识别在其他视角控制器完成工作时可能发生的任何更改(重新加载数据)。
答案 4 :(得分:0)
对于viewWillDisappear中的弹出检查isMovingFromParent
func viewWillDisappear(_ animation:Bool){
super.viewWillDisappear(animation);
if isMovingFromParent {
// your code here
}
}