如何从一个文件控制所有导航栏?

时间:2017-06-28 02:24:43

标签: ios iphone swift uinavigationcontroller uinavigationbar

在我的项目中(以编程方式编写)在某些文件中我隐藏了导航栏,在其他文件中我更改了导航栏颜色。是的,我可以这样做,只需在我想要一些特定导航栏的每个文件中编写代码,但它的错误并且不是正确的方式。

我尝试编写一个UINavigationController的类,我循环遍历所有viewControllers,并在特定文件中隐藏导航栏,但它不起作用。

任何人都可以帮我弄明白吗?从一个文件控制所有导航栏更改(操作)的正确方法是什么?

提前谢谢你。

1 个答案:

答案 0 :(得分:1)

您要做的是将UINavigationViewController子类化并覆盖pushViewController方法。您的ViewControllers应该符合协议,如果ViewController符合该协议,您应该检查pushViewController内部,如果是,请检查它是否实现了协议中的方法并基于该UI布局。

示例:

-(void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated{
 if ([controller conformsToProtocol:@protocol(MyProtocol)]) {
     id<MyProtocol> protocolVC = (id)controller;
     if([protocolVC barColor]){
         UIColor *color = [protocolVC barColor];
         //Set the bar color
     }
 }
 [super pushViewController:viewController animated:animated];
}