关闭模态视图控制器后在根视图控制器中执行操作

Posted

技术标签:

【中文标题】关闭模态视图控制器后在根视图控制器中执行操作【英文标题】:Performing action in root view controller after dismissing modal view controller 【发布时间】:2012-12-11 17:10:58 【问题描述】:

如果我想在关闭模态视图控制器后立即执行某种操作,我应该将代码放在哪里?我知道它不会在 viewDidLoad 中,因为 rootviewcontroller 已经加载到内存中(因为它只是暂时被模态视图隐藏)并且我不确定 viewWillAppear 或 viewDidAppear 因为当然视图已经加载到内存中.

【问题讨论】:

为什么不在dismissModalViewController:animated:的电话之后立即把它写下来? 因为我想做的是从根视图推送另一个视图控制器,而我不能从模态类中做到这一点。我试着把代码放在dismissModalViewController之后,它只是忽略了它。 【参考方案1】:

当模式被解除时,ViewWillAppear 将在调用者视图控制器中再次被调用,因此使用一些逻辑可能是一个好地方。

否则,您可以考虑实现委托,或者如果不考虑同步性,您可以发送自定义 NSNotification 以被模态调用者捕获。

【讨论】:

真的吗?我不知道在关闭模式后再次调用 viewWillAppear 。我会试试这个并告诉你它是如何工作的。谢谢。 工作得很好,谢谢!! 好!但是请注意,如果您的目标是 iPad 应用程序,我想 viewWillAppear 不会被调用,因为模式没有覆盖整个屏幕,并且调用者不会调用 viewWillDisappear。在这种情况下,您除了委托之外别无选择。

以上是关于关闭模态视图控制器后在根视图控制器中执行操作的主要内容,如果未能解决你的问题,请参考以下文章

关闭模态视图控制器,然后执行 segue

从模态视图控制器调用方法

关闭模态视图控制器

如何从模态视图控制器调用呈现视图控制器的方法

sigsegv segv_accerr 在 ios7 中崩溃 mkmapview

在 Xcode 中执行 segue 后如何关闭视图控制器?