从 scenedelgate.swift 初始化 tabbarcontroller

Initialize tabbarcontroller from scenedelgate.swift

我已经使用 scenedelegate.swift 更改了初始 ViewController。现在我想从 scenedelegate.swift.

初始化标签栏控制器
    guard let winScene = (scene as? UIWindowScene) else { return }
    window = UIWindow(windowScene: winScene)
    let storyboard = UIStoryboard(name: "Home", bundle: nil)
    let initialViewController = storyboard.instantiateViewController(identifier: "Home")
    let navController = UINavigationController(rootViewController: initialViewController)
    window?.rootViewController = navController
    window?.makeKeyAndVisible()

Home.storyboard

创建一个 UITabBarController 子类并将它分配给一个带有故事板标识符的 TabBar 控制器。然后,

 guard let winScene = (scene as? UIWindowScene) else { return }
    window = UIWindow(windowScene: winScene)
    let storyboard = UIStoryboard(name: "Home", bundle: nil)
    let initialViewController = storyboard.instantiateViewController(identifier: "TabBarController")
    let navController = UINavigationController(rootViewController: initialViewController)
    window?.rootViewController = navController
    window?.makeKeyAndVisible()

class SceneDelegate: UIResponder, UIWindowSceneDelegate {

    var window: UIWindow?

    private let storyboardName = "Main"
    private let tabbarControllerIdentifier = "TabBarController"
    
    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        
        guard let windowScene = (scene as? UIWindowScene) else { return }
        
        let storyboard = UIStoryboard(name: storyboardName, bundle: nil)
        let tabBarController = storyboard.instantiateViewController(identifier: tabbarControllerIdentifier)
        let navigationController = UINavigationController(rootViewController: tabBarController)
        
        window = UIWindow(windowScene: windowScene)
        window?.rootViewController = navigationController
        window?.makeKeyAndVisible()
    }

}