Navigation Controller - добавить пользовательский элемент панели навигации для всех видов - PullRequest
3 голосов
/ 20 марта 2012

Я создаю навигационный контроллер в моем appDelegate (программно).Я хотел бы добавить пользовательскую кнопку в панель навигации, чтобы на ней отображались все виды.

Я могу получить кнопку, чтобы показать, добавляю ли я ее в методы ViewDidLoad каждого контроллера, но есть ли способ добавить кнопку только один раз (т. Е. В appDelegate, где я создаю контроллер nav)?

1 Ответ

9 голосов
/ 20 марта 2012

Вы можете создать простую иерархию для ваших 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] в подклассы третьего уровня!

...