gpt4 book ai didi

swift - 如何将导航 Controller 添加到不是初始 UIViewController 的 UIViewController

转载 作者:行者123 更新时间:2023-11-30 11:34:53 25 4
gpt4 key购买 nike

好吧,我希望这个问题的标题有意义。基本上,我有一个具有登录屏幕的应用程序,一旦您登录,它会将您带到另一个 View Controller 。登录屏幕被设置为初始 View Controller ,并且它没有导航 Controller ,因为我不希望用户返回到该屏幕,除非他们注销。因此,我通过 Storyboard向 mainViewController 添加了一个导航 Controller ,这是登录后显示的 Controller 。但导航 Controller 并未显示。我不确定这是否与我呈现 mainViewController 的方式有关,但我会向您展示我的代码,让您来评判!

StoryBoard Image

let pushedViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "mainViewController") as! mainViewController
self.present(pushedViewController, animated: true, completion: nil)

我从未向我的 AppDelegate 类添加任何额外的代码,所以我不确定是否必须在那里做点什么?

最佳答案

如果您从 Storyboard 中获取导航 Controller ,则呈现导航 Controller 而不是 mainViewController

为此:

您可以将标识符分配给navigationController作为“mainViewControllerNav”,然后将代码更新为:

let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "mainViewControllerNav")
self.present(vc, animated: true, completion: nil)

现在您正在呈现导航 Controller ,导航 Controller 将加载堆栈中的第一个 View Controller ,即您的“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()
}

希望这对您有帮助。

关于swift - 如何将导航 Controller 添加到不是初始 UIViewController 的 UIViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49870169/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com