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

3

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

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

1个回答

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]

很棒的想法。不过,可惜我找不到一种使用NavController实例本身的某种内置方法/属性/行为来实现这一点的方法 - 在某些应用程序中似乎会非常有用。 - Herr Grumps

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接