在 AppDelegate 中实例化初始 UIViewController
Posted
技术标签:
【中文标题】在 AppDelegate 中实例化初始 UIViewController【英文标题】:Instantiate initial UIViewController in AppDelegate 【发布时间】:2021-09-25 23:52:21 【问题描述】:我知道,有很多类似的线程,但我仍在努力解决这个问题。
我想在 AppDelegate 中实例化某个视图控制器(仅当用户未登录时)。但即使没有身份验证检查我在应用程序委托中的代码以实例化我的登录控制器似乎被忽略了:
class AppDelegate: UIResponder, UIApplicationDelegate
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool
self.window = UIWindow(frame: UIScreen.main.bounds)
let loginController = UIStoryboard(name: "Main", bundle: .main).instantiateViewController(withIdentifier: "loginController") as! LoginController
self.window!.rootViewController = loginController
self.window!.makeKeyAndVisible()
return true
无论我在应用程序委托中实例化哪个视图控制器,启动我的应用程序时都会出现在故事板中设置的初始视图控制器。 (注意:如果没有在情节提要中将视图控制器设置为初始值,则应用程序将以黑屏启动)。 我的错误是什么?
提前非常感谢 亚历克斯
【问题讨论】:
***.com/q/57451496/6576315 THX,RTXGamer! :) 【参考方案1】:您可以在 didFinishLaunchingWithOptions 方法中尝试此代码 --
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let initialVC: ViewController = mainStoryboard.instantiateViewController(withIdentifier: "ViewController") as! ViewController
let navigationController = UINavigationController(rootViewController: initialVC)
navigationController.isNavigationBarHidden = true
self.window?.rootViewController = navigationController self.window?.makeKeyAndVisible()
【讨论】:
【参考方案2】:在现代 ios 应用中,应用委托没有窗口。您可以创建一个,但它将被替换。可见窗口属于 场景委托。您需要使用场景委托代码创建界面。
【讨论】:
例如,见github.com/mattneub/RegistrationExample。以上是关于在 AppDelegate 中实例化初始 UIViewController的主要内容,如果未能解决你的问题,请参考以下文章
在 AppDelegate 中实例化 UINavigationController
在 Swift 5.0 中从 AppDelegate 实例化窗口失败 [重复]
如何从 AppDelegate 实例化 UIViewController?
我可以在我的 appdelegate applicationDidFinishLaunching 中插入 UINavigationController 并在我的笔尖实例化的 UITabBarContr