首页 > 解决方案 > 导航栏现在使用协调器导航显示

问题描述

UIViewController要将屏幕导航逻辑与本教程 分开: https ://www.hackingwithswift.com/articles/71/how-to-use-the-coordinator-pattern-in-ios-apps

一切都使用 正确设置Coordinator protocol,但导航栏未显示。

协调员.swift

protocol Coordinator {
    var childCoordinator: [Coordinator] {get set}
    var navigationController: UINavigationController {get set}

    func start()
}

MainCoordinator.swift

class MainCoordinator: Coordinator {
    var childCoordinator = [Coordinator]()

    var navigationController: UINavigationController

    init(navigationController: UINavigationController) {
        self.navigationController = navigationController
    }
    func start() {
        let vc = ViewController.instantiate()
        navigationController.pushViewController(vc, animated: false)
        navigationController.title = "Home"
        navigationController.navigationBar.prefersLargeTitles = true

    }
}

完整的源代码可以在 GitHub 上找到: https ://github.com/harshal-wani/CoordinatorNavigation

如何解决?

谢谢

标签: iosswiftuinavigationcontrolleruinavigationbar

解决方案


作为替代方案,您还可以按如下方式修改场景委托:

var window: UIWindow?
var coordinator: MainCoordinator?

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {

    let navController = UINavigationController()
    coordinator = MainCoordinator(navigationController: navController)
    coordinator?.start()

    if let windowScene = scene as? UIWindowScene {
        let window = UIWindow(windowScene: windowScene)
        window.rootViewController = navController
        self.window = window
        window.makeKeyAndVisible()
    }
}

推荐阅读