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

use*_*577 3 iphone uinavigationcontroller uinavigationitem

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

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

aka*_*kyy 9

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

                               UIViewController
                                       |
                      CustomBarButtonItemViewController
                       /               |             \
                      /       SecondViewController    \
           FirstViewController                 ThirdViewController
Run Code Online (Sandbox Code Playgroud)

CustomBarButtonItemViewController将覆盖-viewDidLoad,就像这样:

- (void)viewDidLoad {
    [super viewDidLoad];
    UIbarButtonItem *barButtonItem = ...;
    self.navigationItem.rightBarButtonItem = barButtonItem;
}
Run Code Online (Sandbox Code Playgroud)

然后创建你的First-,Second-ThirdViewController作为以下的子类CustomBarButtonItemViewController:

@interface FirstViewController : CustomBarButtonItemViewController

@interface SecondViewController : CustomBarButtonItemViewController

@interface WhateverYouLikeViewController : CustomBarButtonItemViewController
Run Code Online (Sandbox Code Playgroud)

确保你打电话给[super viewDidLoad]你的第三级子类!