Вопрос

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

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

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

...где toolbar — это IBOutlet, ссылающийся на UIToolbar.

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

Это было полезно?

Решение

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

Другие советы

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top