2

我有一堆UIViewController子类。每个修改一个NSManagedObject模型。他们中的许多人还展示了自己的模态视图控制器。

NSManagedObjectContext当用户“弹出”视图控制器或推送下一个视图控制器时,我需要保存更改。

目前,我正在隐藏默认的后退按钮并UIBarButtonItem使用targetofself和 custom设置我自己的action

这工作正常,但理想情况下,我想使用默认的后退按钮并在弹出之前运行代码。有没有办法在弹出之前运行我自己的代码?

(我不希望将代码放入viewWillDisappear,因为持久化到磁盘可能会很昂贵,而且这种方法也可以由视图控制器显示的模态触发。)可以做到吗?

4

5 回答 5

4

您可以viewDidDisappear在检查self1) 中的倒数第二个元素self.navigationController.viewControllers(下一个 VC 刚刚被推送的情况)或 2)self.navigationControllernilselfVC 刚刚被弹出)后,在 中执行此操作。

于 2012-12-21T08:23:06.920 回答
1

是的..导航控制器有一个委托,它指示视图控制器何时弹出或推送..您可以使用它来完成您的任务...

于 2012-12-21T08:23:33.817 回答
0

在您的代码中添加以下方法:

- (void) viewWillDisappear:(BOOL)animated{
     //your code here
}
于 2012-12-21T08:31:21.493 回答
0

我使用 viewWillDissappear 使任何更改持久化。如果需要,我使用 viewWillAppear 来识别在其他 puhed 视图控制器完成工作时可能发生的任何更改(重新加载数据)。

于 2012-12-21T08:54:23.177 回答
0

对于弹出检查 isMovingFromParent in viewWillDisappear

func viewWillDisappear(_ animation:Bool){
    super.viewWillDisappear(animation);
    if isMovingFromParent {
        // your code here
    }
}
于 2020-07-27T14:57:22.770 回答