快速更改导航视图控制器堆栈(以编程方式)



我在应用程序中的逻辑上遇到了一些问题。

我一直在寻找一种更改导航控制器的视图控制器堆栈的方法。

有几个原因。

第一,我有一个登录和注册页面,每个页面都有按钮推送到另一个视图控制器。创建一个能够在它们之间移动的/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)
}    

最新更新