为所有导航栏(UINavigationBar)iOS 5.1+设置按钮和外观

时间:2013-01-15 23:49:05

标签: objective-c ios5 uinavigationcontroller uinavigationbar uibarbuttonitem

我试图设置一个按钮,使其出现在每个有导航栏的视图上。使用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 个答案:

答案 0 :(得分:0)

Apple告诉我们不要继承UINavigationController:

  

此类不适用于子类。相反,在希望应用程序的用户界面反映内容的层次结构特性的情况下,可以按原样使用它的实例。

这是来自文档的XCode版本。在线版loosens up a bit,用以下内容替换该建议:

  

此类通常按原样使用,但可以在iOS 6及更高版本中进行子类化。

如何使用修改后的viewDidLoad创建UIViewController的自定义子类,并将所有自定义VC基于此?