我有一个像这样的导航堆栈:TabBarController -> NavigationController->ControllerA-> ControllerB。
ControllerA和ControllerB被推送到NavigationController中。 我希望ControllerA的navigationBar的backgroundColor是RED,ControllerB的navigationBar的backgroundColor是GREEN。
我已经尝试过外观WhenContainedInInstancesOfClasses。但因为该栏属于NavigationController。它位于层次结构中的 ControllerA 和 ControllerB 之上。所以这个外观WhenContainedInInstancesOfClasses似乎不能工作。
有没有办法让这个与 UINavigationBar 外观一起工作?
我会让每个视图控制器负责在其
viewWillAppear
方法中设置导航栏的颜色。这可确保导航栏根据视图中的视图控制器具有适当的颜色。
不要使用
appearance...
方法,而是直接在特定导航栏上设置颜色。每个视图控制器都可以通过以下方式访问导航栏:
self.navigationController?.navigationBar
如果您希望让其他类控制颜色,您可以将该类设置为导航控制器的
delegate
并实现 navigationController(_:willShow:animated:)
委托方法。根据将显示的控制器设置导航栏颜色。