-1

我正在界面构建器中创建一个带有三个 ViewController 的简单应用程序。现在它们按以下顺序呈现:

第一VC > 第二VC > 第三VC

  1. 第一风投

显示主菜单,通过界面生成器连接播放按钮以显示 SecondVC(现在没有代码)。

  1. 第二风险投资

一个简单的游戏。游戏结束后,我以编程方式呈现 ThirdVC。

let storyboard = UIStoryboard(name: "Main", bundle: nil)
    let vc = storyboard.instantiateViewController(withIdentifier: "GameOverScreen") as UIViewController
    vc.modalPresentationStyle = UIModalPresentationStyle.currentContext
    vc.modalTransitionStyle = .crossDissolve

    self.present(vc, animated: true, completion: nil)

在出现 ThirdVC 之前(或同时),我想关闭 SecondVC 以便仅在层次结构中:

第一VC > 第三VC

存在。

  1. 第三风投

显示一个简单的游戏结束消息。

dismiss(animated: true, completion: nil)

当我关闭这个视图控制器时,我想回到 FirstVC,或者更确切地说,因为 SecondVC 已经被关闭,播放器会自动回到 FirstVC。

我怎样才能做到这一点?当然,我知道如何以编程方式呈现和解散 VC,但是如何在呈现新 VC 的同时解散 VC?或者这样做的正确方法是什么?

4

1 回答 1

1

你最好使用 navigationcontroller 并且当 ThirdVC 被推送时在它的 viewDidLoad 中执行此操作

 func optimizeNavigation()
{


    let viewControllers: [UIViewController] = self.navigationController!.viewControllers ;

    print("before optimize \(viewControllers.count)")

    for aViewController in viewControllers
    {
        if(aViewController is SecondVC)
        {
           aViewController.removeFromParentViewController()
        }
    }

      let viewControllers2: [UIViewController] = self.navigationController!.viewControllers ;

      print("after optimize \(viewControllers2.count)")

}

这样,当您弹出 ThirdVC 时,您将返回 FirstVC

于 2017-12-26T21:06:54.263 回答