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