【问题标题】:dismissViewControllerAnimated issue: presenting controller is gonedismissViewControllerAnimated 问题:显示控制器消失了
【发布时间】:2013-08-02 20:41:49
【问题描述】:

在调用 [self presentViewController:modalController animated:YES completion:nil] 之后,我正在尝试调用 [self.presentingViewControllerdismissViewControllerAnimated:YES completion:nil]。

就显示和隐藏模态控制器而言,一切正常,但是当它被隐藏时,呈现控制器将显示不同的屏幕。

该呈现控制器是一个导航控制器,它基本上会回到显示的第一页。

我做错了什么?

谢谢

【问题讨论】:

    标签: ios6 modal-dialog


    【解决方案1】:

    文档中提到了dismissViewControllerAnimated:completion:

    呈现视图控制器负责关闭它呈现的视图控制器。如果您在呈现的视图控制器本身上调用此方法,它会自动将消息转发到呈现的视图控制器。

    如果您连续呈现多个视图控制器,从而构建一个呈现视图控制器的堆栈,则在堆栈中较低的视图控制器上调用此方法会关闭其直接子视图控制器以及堆栈上该子视图控制器上方的所有视图控制器。发生这种情况时,只有最顶层的视图会以动画方式消失;任何中间视图控制器都简单地从堆栈中删除。最顶层的视图使用其模态转换样式被解除,这可能与堆栈中其他视图控制器使用的样式不同。

    所以也许你在“错误的”视图控制器上调用了这个方法。尝试找出 self.presentingViewController 返回的视图控制器和/或(仅用于测试)尝试在模态视图控制器本身上调用 dismissViewControllerAnimated:completion:

    【讨论】:

    • 在我的模态控制器中,我有这个关闭它的调用。 [self.presentingViewControllerdismissViewControllerAnimated:YES 完成:nil];但是文档的第二段现在有意义并解释了它。谢谢!
    • 我尝试了很多东西。没有任何效果。如何在不干扰堆栈的情况下在 NavigationController 顶部显示模态控制器?在iphone上似乎是不可能的。我是否需要创建自定义视图并为其设置动画?我想重现与 ActionSheet 类似的效果,但需要在其中放入字段。谢谢!
    • 为什么不让导航堆栈的顶部视图控制器呈现模态视图,而不是在 navigationController 上调用 [self presentViewController:modalController animated:YES completion:nil]?
    • 我试过了,但同样的事情发生了。不过会再试一次。我有一个复杂的控制器组织,带有 ECSlidingMenu、一个主控制器/视图和一个底部控制器。
    • 用顶级控制器试过了,它仍然在发生。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-23
    • 2021-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-04
    相关资源
    最近更新 更多