在模态视图被解除后,父视图控制器中是不是有一个委托被调用?

Posted

技术标签:

【中文标题】在模态视图被解除后,父视图控制器中是不是有一个委托被调用?【英文标题】:Is there a delegate in the parent view controller that gets called after a modal view gets dismissed?在模态视图被解除后,父视图控制器中是否有一个委托被调用? 【发布时间】:2011-07-01 16:21:30 【问题描述】:

模态视图控制器关闭后,是否调用任何委托方法将父视图控制器置于最前面?

【问题讨论】:

【参考方案1】:

我最终使用了 Apple 的 ios 视图控制器编程指南中的委托:

http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/ModalViewControllers/ModalViewControllers.html#//apple_ref/doc/uid/TP40007457-CH111-SW14

当需要关闭模态视图控制器时,首选的方法是让父视图控制器执行关闭操作。换句话说,呈现模态视图控制器的同一个视图控制器也应该负责尽可能地关闭它。尽管有几种技术可以通知父视图控制器它应该关闭其模态呈现的子视图,但首选技术是委托。

CoreDataRecepies 示例代码中有一个很好的例子,当添加一个适合我想要做的菜谱时。

【讨论】:

【参考方案2】:

即,在模态视图控制器上“同时”调用view[Will|Did]Disappear:,因为它的视图被关闭,view[Will|Did]Appear: 被发送到正在显示的视图控制器

这里的代码应该与你第一次显示时使用的显示代码不同,

如果您需要将数据从模态控制器传回给显示它的控制器,通常关闭模态控制器的代码会让另一个知道

parentController.item = self.chosenItem;
[parentController dismissModal…

【讨论】:

嗯,由于某种原因,父母的 viewWillAppear 在关闭模式时没有触发。

以上是关于在模态视图被解除后,父视图控制器中是不是有一个委托被调用?的主要内容,如果未能解决你的问题,请参考以下文章

当模态视图控制器被解除时如何调用函数

UIViewController 在解除先前呈现的模态视图控制器后被释放

模态转换后解除分配 SKScene

呈现视图控制器中的方向更改未更新父视图控制器

模态视图控制器使背景变黑

在自定义模式解除转换后,第一个视图控制器的生命周期方法不会被调用