【问题标题】:Is there a way to assign the rootViewController of a NavigationController?有没有办法分配 NavigationController 的 rootViewController?
【发布时间】:2018-08-04 19:51:05
【问题描述】:

当有人正在使用该应用程序时,有没有办法更改根控制器?我现在设置的方式是,如果新用户使用该应用程序,他们将进入具有嵌入式导航控制器的登录页面。当用户填写信息时,他们会进入下一页进行确认。嵌入式导航是返回并更改任何信息。一旦他们确认他们就会进入主页。现在的问题是,当用户返回并遵循一些逻辑时,应用程序会转到另一个已经有导航控制器的视图。当新用户进入该部分时,如何分配返回的用户导航控制器?当用户在空白视图中按下返回时,他们将返回确认页面。

如何让确认页面视图将导航控制器放在顶部而不是底部?我不确定在哪里更改根导航控制器,但我认为它应该在确认视图控制器中的 prepareForSegue

if segue.identifier == "showMemoryTable" {
             let memoryListVC = segue.destination as? ReturningUserCityDetailTableViewController
            memoryListVC?.userData = userData
            if userData?.newUser == true {
                let newRootViewController = ReturningUserCityTableViewController()
                self.navigationController?.viewControllers.first = newRootViewController
                let mainStoryBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
                let viewController: UIViewController = mainStoryBoard.instantiateViewController(withIdentifier: "homeVC") 
                navigationController?.setViewControllers([viewController], animated: true)

            }

我不确定我是否应该使用setViewControllers,但我相信是这样

【问题讨论】:

    标签: ios swift uinavigationcontroller


    【解决方案1】:

    如果你的目标是改变根视图控制器,你应该通过执行一个segue来做到这一点,这样做会更合适:

    let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
    let newRootViewController = mainStoryboard.instantiateViewController(withIdentifier: "ReturningUserCityTableViewController") as! ReturningUserCityTableViewController()
    let ad = UIApplication.shared.delegate as! AppDelegate
    ad.window?.rootViewController = newRootViewController
    

    请注意,它会更改整个应用程序根视图控制器;您可以将所需的导航控制器设置为应用程序的根(显然您可以通过它们的故事板 ID 获取它们)。

    【讨论】:

    • 可能我理解的不是很清楚,因为我还在学习iOS,但这不是我需要的吗?我不是要更改整个应用程序的根视图控制器,而是要更改 UINavigationController 的堆栈方式。 stackoverflow.com/questions/33374272/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-24
    • 1970-01-01
    • 2023-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-28
    相关资源
    最近更新 更多