【问题标题】:Initialize tabbarcontroller from scenedelgate.swift从 scenedelgate.swift 初始化 tabbarcontroller
【发布时间】:2021-03-19 16:14:04
【问题描述】:

我已经使用 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

【问题讨论】:

  • 这与您已经为您的 initialViewController 完成的过程相同。

标签: ios swift uinavigationcontroller uitabbarcontroller


【解决方案1】:

创建一个 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()

【讨论】:

  • 我尝试了你的方法,它成功了,但是我的视图控制器顶部出现了一个白色的空白区域。这是我的故事板层次结构。 i.stack.imgur.com/SxOYH.png。我尝试在 viewwillappear 函数中设置 visible false ,但没​​有成功。
【解决方案2】:

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()
    }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-06
    • 1970-01-01
    • 2011-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-29
    相关资源
    最近更新 更多