【问题标题】:Instantiate initial UIViewController in AppDelegate在 AppDelegate 中实例化初始 UIViewController
【发布时间】: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
    }
}

无论我在应用程序委托中实例化哪个视图控制器,启动我的应用程序时都会出现在故事​​板中设置的初始视图控制器。 (注意:如果没有在情节提要中将视图控制器设置为初始值,则应用程序将以黑屏启动)。 我的错误是什么?

提前非常感谢 亚历克斯

【问题讨论】:

标签: swift xcode uiviewcontroller storyboard appdelegate


【解决方案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 应用中,应用委托没有窗口。您可以创建一个,但它将被替换。可见窗口属于 场景委托。您需要使用场景委托代码创​​建界面。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-10
    • 2013-10-18
    相关资源
    最近更新 更多