4

我面临着试图同时设置一个UIViewControllerUINavigationController的困境。似乎 a可以这样启动: rootViewUINavigationBarUINavigationControllerrootViewController

let navController = UINavigationController(rootViewController: someViewController)

或使用 UINavigatioBar,如下所示:

let navController = UINavigationController(navigationBarClass: someUINavigationBar, toolbarClass: nil)

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

我试过设置UINavigationBar类似的东西navController.navigationController?.navigationBar = MyNavigationBar ,但似乎 navigationController?.navigationBar 只是一个吸气剂。

4

2 回答 2

7

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

extension UINavigationController {

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

}
于 2018-01-22T20:26:25.957 回答
2

为什么不在创建后设置 rootViewController navController

let navController = UINavigationController(navigationBarClass: someUINavigationBar, toolbarClass: nil)
navController.viewControllers = [someRootViewController]
于 2018-01-22T20:26:34.127 回答