在SWIFT中的不同视图之间切换

我在堆栈溢出社区中阅读了许多关于在不同的ViewController之间切换的问题/答案,但我无法find正确的答案来解决我的具体问题。

  1. 我使用NavigationViewController来“连接”我所有不同的viewControllers(ViewController / TableViewController / CollectionViewController)

  2. 我有一些不依赖于ViewController类的类。 例如来计算我的“计算”类中的任何东西。

我正在寻找一个简单的解决scheme,以切换我所有的ViewControllers。 我想在我的“计算”类决定例如在我的导航视图控制器退后一步。

在我使用这个的那一刻:

  1. 在两个不同的ViewController之间切换的示例:

    let sb = UIStoryboard(name: "Main", bundle: nil) let vc = sb.instantiateViewControllerWithIdentifier("StartPage") as! StartPageView self.presentViewController(vc, animated: true, completion: nil) 

问题:这个例子只适用于ViewController类,导航栏消失。

  1. 示例在我的NavigationViewController中退一步:

     self.navigationController?.popViewControllerAnimated(true) 

问题:这个例子只适用于ViewController类。

编辑1:

我find了一个很好的解决scheme,用这部分代码调用我所有的viewControllers:

  let switchViewController = self.navigationController?.viewControllers[1] as! ScanTableView self.navigationController?.popToViewController(switchViewController, animated: true) 

如何在非ViewController类中调用此代码?

将新的视图控制器推到您现有的导航堆栈上,而不是以模态方式显示:

 let vc = self.storyboard!.instantiateViewControllerWithIdentifier("StartPage") as! StartPageView self.navigationController!.pushViewController(vc, animated: true)