在我的项目中(以编程方式编写)在某些文件中我隐藏了导航栏,在其他文件中我更改了导航栏颜色。是的,我可以这样做,只需在我想要一些特定导航栏的每个文件中编写代码,但它的错误并且不是正确的方式。
我尝试编写一个UINavigationController的类,我循环遍历所有viewControllers,并在特定文件中隐藏导航栏,但它不起作用。
任何人都可以帮我弄明白吗?从一个文件控制所有导航栏更改(操作)的正确方法是什么?
提前谢谢你。
答案 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];
}