ios - 有没有办法分配 NavigationController 的 rootViewController ?

标签 ios swift uinavigationcontroller

当有人正在使用该应用程序时,有没有办法更改根 Controller ?我现在设置的方式是,如果新用户使用该应用程序,他们将进入具有嵌入式导航 Controller 的登录页面。当用户填写信息后,他们会进入下一页进行确认。嵌入式导航用于返回并更改任何信息。一旦他们确认,他们就会进入主页。现在的问题是,当用户返回并遵循某些逻辑时,应用程序会转到已经具有导航 Controller 的不同 View 。当新用户进入该部分时,如何分配返回用户导航 Controller ?当用户在空白 View 上按返回键时,他们将返回到确认页面。 enter image description here

如何让确认页面 View 将导航 Controller 置于顶部而不是底部?我不确定在哪里更改根导航 Controller ,但我认为它应该位于确认 View Controller 的 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,但我相信是这样的

最佳答案

如果您的目标是更改 Root View Controller ,您不应该通过执行 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

请注意,它更改了整个应用程序 Root View Controller ;您可以将所需的导航 Controller 设置为应用程序的根(显然您可以通过 Storyboard ID 获取它们)。

关于ios - 有没有办法分配 NavigationController 的 rootViewController ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48970168/

相关文章:

ios - 如何在滚动时将单元格的内容保留在屏幕上,直到单元格用完可用空间?

ios - Swift - 来自 appDelegate 的 pushViewController,rootViewController.navigationController 为 nil

ios - UISearchController 搜索栏不隐藏导航栏

ios - Swift 导航 Controller - 隐藏 View

objective-c - 什么是回调处理程序

ios - Objective-C 如何使用 AFNetworking 发布表单数据?

objective-c - 分配和释放问题

ios - UIWindow 无法填满新设备的屏幕?

ios - 从 subview Controller 中隐藏父 View 的 UIView

ios - 如何在操作后保留对数组的引用?