同时设置 UINavigationController 的导航栏和 rootViewController

dre*_*934 4 uinavigationbar uinavigationcontroller ios swift rootviewcontroller

我在尝试同时设置 aUINavigationControllerrootViewUIViewController时遇到了困境UINavigationBar。似乎 aUINavigationController可以用 a 启动,rootViewController如下所示:

let navController = UINavigationController(rootViewController: someViewController)
Run Code Online (Sandbox Code Playgroud)

或者使用 UINavigatioBar,如下所示:

let navController = UINavigationController(navigationBarClass: someUINavigationBar, toolbarClass: nil)
Run Code Online (Sandbox Code Playgroud)

但是,我希望能够添加一个 rootViewController 以及一个自定义的UINavigationBar. 有什么办法吗?

我已经尝试过设置UINavigationBar类似的设置navController.navigationController?.navigationBar = MyNavigationBar ,但似乎 navigationController?.navigationBar 只是一个 getter。

And*_*rea 7

rootViewController只是要显示的第一个视图控制器。虽然它似乎无法从任何地方访问,但您可以将viewControllersstack 属性设置为一个视图控制器,即您的根。
这是一个带有便利初始化程序的扩展。

extension UINavigationController {

    convenience init(navigationBarClass: Swift.AnyClass?, toolbarClass: Swift.AnyClass?, rootViewController: UIViewController) {
        self.init(navigationBarClass: navigationBarClass, toolbarClass: toolbarClass)
        self.viewControllers = [rootViewController]
    }

}
Run Code Online (Sandbox Code Playgroud)