同时设置UINavigationController的导航栏和rootViewController

时间:2018-01-22 20:14:19

标签: ios swift uinavigationcontroller uinavigationbar rootviewcontroller

我在尝试同时设置csrfmiddlewaretoken=i6NEr5alSUK4mL7A7ov2HDBMaOErD7uRoW9Q16pKTESrSm1Rg08f9LMYqZcFRCDN& csrfmiddlewaretoken=i6NEr5alSUK4mL7A7ov2HDBMaOErD7uRoW9Q16pKTESrSm1Rg08f9LMYqZcFRCDN& email=myaddress%40hotmail.com& password=mypassword UINavigationController UIViewController和rootView时遇到了困境。似乎UINavigationBar可以使用UINavigationController启动,因为:

rootViewController

或使用UINavigatioBar,如下:

let navController = UINavigationController(rootViewController: someViewController)

但是,我希望能够添加rootViewController以及自定义let navController = UINavigationController(navigationBarClass: someUINavigationBar, toolbarClass: nil) 。有没有办法这样做?

我已尝试将UINavigationBar设为UINavigationBar 但是,似乎navigationController?.navigationBar只是一个getter。

2 个答案:

答案 0 :(得分:2)

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

extension UINavigationController {

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

}

答案 1 :(得分:1)

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

let navController = UINavigationController(navigationBarClass: someUINavigationBar, toolbarClass: nil)
navController.viewControllers = [someRootViewController]