Настройка элементов панели инструментов UINavigationController - PullRequest
7 голосов
/ 22 августа 2009

В iPhone OS 3.0 вы можете устанавливать элементы панели инструментов UINavigationController, используя метод setToolbarItems:animated:. Однако для этого необходимо передать массив UIToolbarItems. Хотя я мог бы программно создавать эти элементы панели инструментов, я бы предпочел создать их в Интерфейсном Разработчике, если это возможно.

Имея это в виду, я создал UIToolbar в «MyGreatViewController.xib» и заполнил его нужными элементами панели инструментов. Затем в «MyGreatViewController.m» я получаю элементы с панели инструментов и передаю их setToolbarItems:animated::

- (void)viewDidLoad {
    [super viewDidLoad];
    [self setToolbarItems: [toolbar items]];
}

... где toolbar - IBOutlet, ссылающийся на UIToolbar.

Это хороший подход? Есть ли лучший способ сделать это? Должен ли я просто создавать предметы программно?

Ответы [ 2 ]

12 голосов
/ 20 сентября 2009

Я не знаю, документировано ли это где-либо, но я обнаружил, что в Интерфейсном Разработчике, если вы активируете панель инструментов контроллера навигации, вы можете перетаскивать элементы панели в свой контроллер представления, и они автоматически отображаются в панель инструментов контроллера навигации.

Например, вот что мы можем сделать (используя Xcode 3.2 на Snow Leopard):

  1. Файл-> Новый проект .... Выберите Приложение на основе навигации и создайте проект.
  2. Открыть MainWindow.xib в Интерфейсном Разработчике.
  3. Выберите контроллер навигации и в инспекторе атрибутов установите флажок «Показывать панель инструментов». Это приведет к появлению объекта панели инструментов.
  4. Перетащите элемент панели кнопок из библиотеки на панель инструментов. Он появится на панели инструментов. Если вы проверите иерархию в NIB, вы увидите, что этот новый элемент является дочерним по отношению к RootViewController.

Похоже, что любые элементы панели кнопок, добавленные в качестве дочерних элементов элемента навигации, будут отображаться на панели навигации, а любые элементы панели кнопок, добавленные в качестве дочерних элементов контроллера представления, будут отображаться на панели инструментов.

(Я случайно наткнулся на это. Если кто-нибудь сможет найти документацию по этому поведению или любую дополнительную информацию, я бы хотел услышать об этом.)

4 голосов
/ 22 августа 2009

Это вполне приемлемый способ сделать это, но имейте в виду, что загрузка файлов xib на iPhone довольно дорогая, и может быть быстрее создать элементы панели инструментов программно в вашем методе viewDidLoad.

...