我在应用程序中的逻辑上遇到了一些问题。
我一直在寻找一种更改导航控制器的视图控制器堆栈的方法。
有几个原因。
第一,我有一个登录和注册页面,每个页面都有按钮推送到另一个视图控制器。创建一个能够在它们之间移动的/infinite/循环。
我还需要在用户登录后将 topViewController 更改为我的dashboard_VC。所以登录页面的后退按钮没有显示...
一段时间以来,我一直在努力寻找解决方案。我一直在看 rootViewController,直到我意识到这可能不是我要找的那个,因为我的 rootViewController 是我的导航控制器,而不是我在堆栈中的第一个视图控制器。
所以我试图用这个来改变堆栈:
self.navigationController?.setViewControllers([LandingPageVC(),LoginVC()], animated: false)
但是,这会导致无限循环。由于每次加载此视图控制器时它都会运行,并且当它运行时,它似乎重新加载了所有视图控制器......
我试着把它放在视图中DidAppearAnimation。但结果是一样的。从那以后,我一直试图把它放在viewDidLoad或Appear方法之外。但我无法让它工作,因为该类没有"导航控制器"。
任何帮助将不胜感激!
(我没有使用故事板)
在过渡到 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)
}