我的应用程序中的逻辑遇到了一些问题。
我一直在寻找一种方法来改变导航控制器的viewcontroller堆栈。
有几个原因。
一,我有一个登录和注册页面,每个页面都有按钮推送到另一个视图控制器。创建一个能够在它们之间进行的/无限/循环。
我还需要在用户登录后将topViewController更改为我的dashboard_VC。因此登录页面的后退按钮不会显示...
我一直试图找到解决方案。我一直在看rootViewController,直到我意识到这可能不是我正在寻找的那个,因为我的rootViewController是我的navigationController而不是我在堆栈中的第一个View Controller。
所以我尝试用这个来改变堆栈:
self.navigationController?.setViewControllers([LandingPageVC(),LoginVC()], animated: false)
然而,这会导致无限循环。因为它每次加载这个viewController时运行,并且当它运行时,它似乎重新加载所有的viewcontrollers ......
我尝试将它放在viewDidAppearAnimated中。但结果相同。从那时起我一直试图把它放在viewDidLoad或Appear方法之外。但由于课程没有“navigationController”,我无法让它工作。
非常感谢任何帮助!
(我没有使用故事板)
答案 0 :(得分:2)
在转换转换为 ViewController(Dashboard_VC)时:
override init() {
super.init()
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override init(nibName nibNameOrNil: String!, bundle nibBundleOrNil: NSBundle!) {
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
}
在转换来自登录视图控制器:
if (successfulLogin) {
let mainController = DashBoardViewController()
mainController.navigationItem.setHidesBackButton(true, animated: false)
navigationController!.pushViewController(mainViewController, animated: false)
}