【发布时间】:2017-01-03 20:49:44
【问题描述】:
我有一个UINavigationBar 的子类,我想创建一个使用UINavigationBar 子类的UINavigationController 的子类。我知道如何设置默认 UINavigationController 以使用自定义导航栏
let navController = UINavigationController(navigationBarClass: CustomNavigationBar.self, toolbarClass: nil)
但是我希望能够创建一个自定义UINavigationController(以编程方式),它已经将我的自定义导航栏设置为其导航栏类。我已经在这个链接上看到了如何做到这一点,但它似乎有点过时(2012 年)和“hacky AF” - https://stackoverflow.com/a/9610801/2654425。我知道如何通过设置UINavigationController 的导航栏类在“故事板”中做到这一点,但我希望在我的自定义 UINavigation 控制器中以编程方式完成。
这是一个基本的UINavigationBar 和UINavigationController 子类:
class CustomNavigationBar: UINavigationBar {
override init(frame: CGRect) {
super.init(frame: frame)
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)!
}
override func draw(_ rect: CGRect) {
self.backgroundColor = UIColor.red
}
}
class CustomNavigationController: UINavigationController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
我不确定在哪里设置自定义导航栏。任何帮助是极大的赞赏。 :)
【问题讨论】:
-
尝试在 viewDidLayoutSubViews 方法中添加。
标签: ios uinavigationcontroller swift3 uinavigationbar subclass