Ich habe eine Unterklasse von UINavigationBar
und ich möchte eine Unterklasse von UINavigationController
, die diese UINavigationBar
Unterklasse verwendet. Ich weiß, wie die Standard festlegen UINavigationController
eine benutzerdefinierteEinstellung UINavigationBar Unterklasse in UINavigationController Unterklasse
let navController = UINavigationController(navigationBarClass: CustomNavigationBar.self, toolbarClass: nil)
aber ich in der Lage sein wollen, verwenden Sie eine benutzerdefinierte UINavigationController
(programmatisch) zu erstellen, die bereits meine benutzerdefinierten Navigationsleiste als Navigationsleiste Klasse setzt. Ich habe gesehen, wie es bei diesem Link zu tun ist, aber es scheint ein wenig veraltet (2012) und "Hacky AF" - https://stackoverflow.com/a/9610801/2654425. Ich weiß, wie man es in "Storyboard" macht, indem ich die Navigationsbarklasse des UINavigationController
setze, aber ich möchte, dass das programmatisch in meinem kundenspezifischen UINavigation Controller erfolgt.
Hier ist eine grundlegende UINavigationBar
und UINavigationController
Unterklasse:
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.
}
}
Ich bin nicht sicher, wo die benutzerdefinierte Navigationsleiste setzen. Jede Hilfe wird sehr geschätzt. :)
versuchen, in viewDidLayoutSubViews Methode hinzuzufügen. –