为所有导航栏 (UINavigationBar) iOS 5.1+ 设置按钮和外观
Posted
技术标签:
【中文标题】为所有导航栏 (UINavigationBar) iOS 5.1+ 设置按钮和外观【英文标题】:Set a button and appearance for all Navigation Bars (UINavigationBar) iOS 5.1+ 【发布时间】:2013-01-15 23:49:05 【问题描述】:我试图设置一个按钮,以便它出现在每个具有导航栏的视图上。使用 AppDelegate 上的外观代理设置所有视图的外观不是问题
[[UINavigationBar appearance] setTintColor:[UIColors grayColor]];
我试图继承 UINavigationController,然后在情节提要上设置导航控制器。在viewDidLoad
方法上我试过这个:
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"right"
style:UIBarButtonItemStyleBordered target:self action:nil];
但是按钮没有显示出来。
如果我这样做:
self.navigationBar.topItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"right"
style:UIBarButtonItemStyleBordered target:self action:nil];
按钮会显示,但在您进入下一个屏幕后会消失。
我正在尝试这样做,因此我不必在每个视图控制器的所有 viewDidLoad
方法上设置左右按钮。是否可以使用 UINavigationController 的子类来设置导航栏的属性?
【问题讨论】:
【参考方案1】:Apple 告诉我们不要继承 UINavigationController:
这个类不用于子类化。相反,在您希望应用程序的用户界面反映内容的分层性质的情况下,您可以按原样使用它的实例。
这来自文档的 XCode 版本。在线版本loosens up a bit,将建议替换为:
此类通常按原样使用,但在 ios 6 及更高版本中可能是子类。
如何使用修改后的 viewDidLoad 创建 UIViewController 的自定义子类并将所有自定义 VC 建立在此基础上?
【讨论】:
你是对的,继承 UIViewController 将是最好的选择。谢谢!以上是关于为所有导航栏 (UINavigationBar) iOS 5.1+ 设置按钮和外观的主要内容,如果未能解决你的问题,请参考以下文章
如何在 uinavigationbar 中的特定位置添加项目?
如何防止在横向上自动调整 UINavigationBar 的大小