导航控制器 - 将自定义导航栏项添加到所有视图

时间:2012-03-20 18:50:56

标签: iphone uinavigationcontroller uinavigationitem

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

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

1 个答案:

答案 0 :(得分: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]