当有人在使用应用程序的中途时,有没有办法更改根控制器?我现在设置它的方式是,如果新用户使用该应用程序,他们将进入具有嵌入式导航控制器的登录页面。当用户填写信息时,他们会进入下一页进行确认。嵌入式导航将返回并更改任何信息。一旦他们确认他们进入主页面。现在的问题是,当用户返回并遵循一些逻辑时,应用程序会转到已有导航控制器的不同视图。当新用户进入该部分时,如何分配返回的用户导航控制器?当用户在空白视图上按下时,他们将返回确认页面。
如何让确认页面视图将导航控制器放在顶部而不是底部?我不知道在哪里更改根导航控制器,但我认为它应该在确认视图控制器的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
,但我相信
答案 0 :(得分:0)
如果您的目标是更改根视图控制器,您应该不通过执行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获取它们)。