【问题标题】:How to dismiss VIewController iOS Swift如何关闭 VIewController iOS Swift
【发布时间】:2015-12-10 09:12:17
【问题描述】:

我是 iOS 开发的新手。我正在使用 iOS Swift 开发应用程序。我有 3 个视图控制器 viewController1、viewController2、viewController3。 当我从 viewController1 中单击时,它会移动到 viewController2。通过使用以下代码

let storyboard = UIStoryboard(name: "Main", bundle: nil)
        let secondViewController = storyboard.instantiateViewControllerWithIdentifier("viewController2")
        presentViewController(secondViewController, animated: false, completion: nil)

现在我使用以下代码从 viewController2 移动到 viewController3

performSegueWithIdentifier("viewController3", sender: scoreColorArray);

一切都好。现在我想从 viewController3 回到 viewController1。我的问题是它不会去 viewController1 而是去 viewController2。我知道 viewController2 没有被解雇的原因。

我想关闭当前的视图控制器并开始新的。我该怎么做?我知道有一些方法可以做到这一点,请有人帮我找到问题。

【问题讨论】:

  • 在你展示的那个上调用dismissViewController
  • “我想解散第二个并转到第三个”。当我从第二个调用dismiss时,它不会转到第三个视图控制器。
  • 您的评论有点混乱。你想从VC3转到VC1,对吗?如果 VC1 呈现 VC2 而 VC2 呈现 VC3,那么在 VC3 上调用 self.presentingViewController?.presentingViewController?.dismissViewControllerAnimated 应该会将您带到 VC1。
  • @spassas 这正是我想要的。您能否在答案中添加此内容。它正在工作。

标签: ios swift viewcontroller


【解决方案1】:

由于您的演示顺序是VC1 -> VC2 -> VC3,您需要在VC3 上调用self.presentingViewController?.presentingViewController?.dismissViewControllerA‌​animated,以这种方式反向遍历您的顺序。

【讨论】:

    【解决方案2】:

    您可以通过使用委托来实现它。

    • 您将代理呼叫从controller 2 发送到controller 1 以解除 控制器 2。
    • dismiss成功后,你会从controller 1推送controller 3

    你可以看我的这个案例的演示:Demo Pushview

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-19
      • 2014-08-31
      • 2021-07-24
      • 2016-09-17
      • 2019-11-14
      • 2012-04-30
      • 1970-01-01
      • 2019-05-04
      相关资源
      最近更新 更多