У меня есть подкласс UINavigationBar
, и я хочу создать подкласс UINavigationController
, который использует этот подкласс UINavigationBar
. Я знаю, как установить по умолчанию UINavigationController
использовать пользовательские панели навигацииНастройка подкласса UINavigationBar в подклассе UINavigationController
let navController = UINavigationController(navigationBarClass: CustomNavigationBar.self, toolbarClass: nil)
однако я хочу, чтобы иметь возможность создать собственный UINavigationController
(программно), который уже устанавливает свою собственную панель навигации в своем классе навигационной панели. Я видел, как это сделать по этой ссылке, но кажется немного устаревшим (2012) и «hacky AF» - https://stackoverflow.com/a/9610801/2654425. Я знаю, как это сделать в «Storyboard», установив класс навигационной панели 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 Method. –