【问题标题】:How to dismiss only last controller in stack without dismissing one by one如何只关闭堆栈中的最后一个控制器而不一个一个地关闭
【发布时间】:2023-03-30 22:05:01
【问题描述】:

例如我们有 uiviewcontrollers: vc0, vc1, vc2。 Vc0 是根目录,在 vc0 上添加了 vc1,就像在 vc0 上的 presentViewController 一样,在 vc1 上像 presentViewController 一样添加了 vc2。当我尝试从 vc0 动画调用dismissViewController 时,我希望只有 vc2 控制器调用方法 viewWillDisappear 并且只有 vc2 解除动画。但实际上首先解除 vc2,但之后 vc1 使用调用方法 viewDidAppear、viewDidDisappear 解除,并且也使用动画模态解除。我应该怎么做才能同时关闭所有堆栈 vc1 和 vc2 动画?

【问题讨论】:

    标签: ios uikit


    【解决方案1】:

    在 vc1 的 prepare(for segue: UIStoryboardSegue, sender: Any?) 中,您通过做传递实例

    vc2.vc1 = self
    

    当然还有在 Vc2 中声明 vc1

    然后,当你想解除两者时,你就这样做

    self.dismiss(animated: true)
    vc1.dismiss(animated: true)
    

    【讨论】:

    • 我根本不使用storyboard和segue)
    • 是的。您说在 vc1 上添加了 vc2,如 presentViewController。这意味着您正在执行模态转场。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    • 2010-12-29
    • 1970-01-01
    • 2018-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多