好的,我希望这个问题的标题有意义。基本上,我有一个具有登录屏幕的应用程序,一旦您登录它将带您到另一个视图控制器。登录屏幕被设置为初始视图控制器,它没有导航控制器,因为除非他们退出,否则我不希望用户返回该屏幕。所以,我通过storyboard添加了一个导航控制器到我的mainViewController,这是登录后显示的控制器。虽然导航控制器没有出现。我不确定它是否与我呈现mainViewController的方式有关,但我会告诉你我的代码,我会让你成为法官!
let pushedViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "mainViewController") as! mainViewController
self.present(pushedViewController, animated: true, completion: nil)
我从来没有在我的AppDelegate课程中添加任何额外的代码,所以我不确定我是否必须在那里做点什么?
答案 0 :(得分:0)
您可以通过在UINavigationController中设置let pushedViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "mainViewController") as! mainViewController
let vc = UINavigationController.init(rootViewController: pushedViewController)
self.present(vc, animated: true, completion: nil)
" Driver "
答案 1 :(得分:0)
如果您从故事板中获取导航控制器,则导航控制器不是mainViewController
。
为此:
您可以将标识符指定给navigationController "mainViewControllerNav"
,然后将代码更新为:
let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "mainViewControllerNav")
self.present(vc, animated: true, completion: nil)
现在您将展示导航控制器,导航控制器将在堆栈中加载其第一个视图控制器,即"mainViewController"
。
<强>相反:强>
我建议您在登录时更改根目录并注销:
if let navVC = UIStoryboard(name: "Main", bundle: Bundle.main).instantiateViewController(withIdentifier: "mainViewControllerNav") as? UINavigationController,
let appDelegate = UIApplication.shared.delegate as? AppDelegate {
appDelegate.window?.rootViewController = navVC
appDelegate.window?.makeKeyAndVisible()
}
希望这会对你有所帮助。