在SWIFT中的不同视图之间切换
我在堆栈溢出社区中阅读了许多关于在不同的ViewController之间切换的问题/答案,但我无法find正确的答案来解决我的具体问题。
-
我使用NavigationViewController来“连接”我所有不同的viewControllers(ViewController / TableViewController / CollectionViewController)
-
我有一些不依赖于ViewController类的类。 例如来计算我的“计算”类中的任何东西。
我正在寻找一个简单的解决scheme,以切换我所有的ViewControllers。 我想在我的“计算”类决定例如在我的导航视图控制器退后一步。
在我使用这个的那一刻:
-
在两个不同的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:
我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)