连续的模态视图控制器在dismissModalViewControllerAnimated 上使应用程序崩溃

Posted

技术标签:

【中文标题】连续的模态视图控制器在dismissModalViewControllerAnimated 上使应用程序崩溃【英文标题】:Consecutive modal view controllers crashes the app on dismissModalViewControllerAnimated 【发布时间】:2012-08-26 08:03:25 【问题描述】:

从根视图控制器,我显示了一个模态视图控制器(FormSheet),它看起来像一些用户操作的弹出窗口,单击模态视图控制器顶部的按钮(第一个)打开另一个模态视图控制器(第二个 FormSheet )。这看起来也像一个弹出窗口。第二个模态视图控制器有一个关闭按钮,并且内部事件是在第二个模态视图控制器类中编写的。当关闭按钮事件处理程序时,我调用 [self dismissModalViewControllerAnimated:YES] 来关闭第二个模态视图控制器。但此时应用程序崩溃了。 (注意:我使用故事板创建 UI 和关闭 ARC 的过渡)。请告诉我我做错了什么!

我收到的错误消息是 [myFirstPoppViewController topViewController]: unrecognized selector sent to instance 0x6895410

【问题讨论】:

【参考方案1】:

这是糟糕的设计。如果您正在寻找创建视图层次结构,那么我建议您考虑使用UINavigationController

这样做将允许您使用为您处理的后退按钮和转换来浏览层层和层。

【讨论】:

感谢您的回复!。我打开的模态视图控制器只是看起来像弹出窗口的 F​​ormSheets,所以我不能在这种情况下使用 UINavigationController。看到您的回答后,我编辑了我的问题。 @saikamesh 那么您可能想要考虑坚持使用原始视图控制器并创建额外的自定义 UIViews 作为您的弹出窗口。通过这种方式,您可以随心所欲地为它们设置动画,甚至无需离开原始视图控制器。这也将为轻松制作自己的自定义过渡效果打开大门。 UIModalPresentationFormSheet 用于将模态视图控制器显示为弹出窗口。所以我将它用于我的两个模态视图控制器。第一个模态视图控制器上有一个关闭按钮,它也可以毫无问题地关闭第一个弹出窗口。 @saikamesh 我最好的猜测是当你调用dismiss时它会崩溃,因为一旦有第二个模态视图ios不知道要关闭哪个。

以上是关于连续的模态视图控制器在dismissModalViewControllerAnimated 上使应用程序崩溃的主要内容,如果未能解决你的问题,请参考以下文章

iPhone - 平滑显示 2 个连续的模态视图控制器

不能连续调用dismissModalViewController吗?

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

模态视图的 iPad 问题:创建视图控制器后模态视图标签为空

模态视图控制器在旋转时占据整页

在后台关闭模态视图控制器