我在堆栈溢出社区中阅读了很多关于在不同ViewControllers之间切换的问题/答案,但我找不到针对我的具体问题的正确答案。
我正在使用NavigationViewController“连接”我所有不同的viewControllers(ViewController / TableViewController / CollectionViewController)
我有一些不依赖于ViewController类的类。例如,计算我的“计算”类中的任何内容。
我正在寻找一个简单的解决方案,在所有ViewControllers之间切换。我想在我的“计算”课程中做出决定,例如在导航ViewController中退后一步。
在我使用它的那一刻:
在两个不同的ViewController之间切换的示例:
let sb = UIStoryboard(name: "Main", bundle: nil)
let vc = sb.instantiateViewControllerWithIdentifier("StartPage") as! StartPageView
self.presentViewController(vc, animated: true, completion: nil)
问题:此示例仅适用于ViewController类,导航栏消失。
在我的NavigationViewController中退后一步的示例:
self.navigationController?.popViewControllerAnimated(true)
问题:此示例仅适用于ViewController类。
编辑1:
我找到了一个很好的解决方案,用这部分代码调用我的所有viewControllers:
let switchViewController = self.navigationController?.viewControllers[1] as! ScanTableView
self.navigationController?.popToViewController(switchViewController, animated: true)
如何在非ViewController类中调用此代码?
答案 0 :(得分:1)
将新视图控制器推送到现有导航堆栈,而不是以模态方式呈现:
let vc = self.storyboard!.instantiateViewControllerWithIdentifier("StartPage") as! StartPageView
self.navigationController!.pushViewController(vc, animated: true)