2012-03-20 129 views
3

我正在我的appDelegate(以编程方式)创建导航控制器。我想将一个自定义按钮添加到导航栏,以便它将显示所有视图。导航控制器 - 添加自定义导航栏项目到所有视图

我可以得到按钮来显示是否将它添加到每个控制器的ViewDidLoad方法中,但有没有一种方法可以只添加按钮一次(即在创建导航控制器的appDelegate中)?

回答

9

您可以为您ViewControllers创建一个简单的层次结构:

       UIViewController 
             | 
         CustomBarButtonItemViewController 
        /    |    \ 
        /  SecondViewController \ 
      FirstViewController     ThirdViewController 

CustomBarButtonItemViewController将覆盖-viewDidLoad,像这样:

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    UIbarButtonItem *barButtonItem = ...; 
    self.navigationItem.rightBarButtonItem = barButtonItem; 
} 

然后创建First-Second-ThirdViewController作为CustomBarButtonItemViewController的子类:

@interface FirstViewController : CustomBarButtonItemViewController 

@interface SecondViewController : CustomBarButtonItemViewController 

@interface WhateverYouLikeViewController : CustomBarButtonItemViewController 

确保您在第三级子类中致电[super viewDidLoad]

+0

这很好,感谢您的答案! – user1264577 2012-03-21 15:40:55

+0

伟大的想法。尽管如此,没有(我可以找到)使用NavController实例本身内置的方法/属性/行为来实现这一点的方式 - 看起来像是某些在某些应用程序中非常有用的东西。 – 2012-09-26 02:56:49