Как правильно добавить панель инструментов в навигационный контроллер? - PullRequest
0 голосов
/ 18 октября 2011

Итак, я пытаюсь добавить UIToolbar в UIViewController, который является частью иерархии UINavigation, и мне было интересно, каков наилучший способ сделать это.Я знаю, что в iOS3 они позволили каждому viewcontroller, который является частью иерархии навигации, иметь свою собственную панель инструментов, поэтому я считаю, что это лучший способ сделать это.Тем не менее, синтаксис того, что я делаю, вызывает у меня проблемы, так как я использую три различных типа синтаксиса для добавления панели инструментов следующим образом:

[[self navigationController] setToolbarHidden:NO]; 
[self setToolbarItems: myToolbarButtons];
[[[self navigationController] toolbar]setBarStyle:UIBarStyleBlack];

Это отлично работает и на самом деле исправляет плохую памятьдоступ с того момента, когда я добавлял панель инструментов в подпредставление вида навигации.Но я не понимаю, как я могу сделать "self setToolbarItems" после того, как я сделаю панель инструментов видимой.Это становится частью viewcontroller тогда?Как я уже сказал, это работает, но меня это беспокоит.

Ответы [ 2 ]

1 голос
/ 18 октября 2011

UIVIewController имеет свойство, называемое UINavigationController. Каждый UINavigationController имеет собственную встроенную панель инструментов. Поэтому, когда вы звоните,

[[self navigationController] setToolbarHidden:NO];

вы фактически активируете панель инструментов свойства navigationController, который поставляется с каждым UIViewController. И когда вы устанавливаете элемент и стиль панели инструментов с помощью следующих двух строк:

[self setToolbarItems: myToolbarButtons];
[[[self navigationController] toolbar]setBarStyle:UIBarStyleBlack];

вы фактически настраиваете элементы встроенной панели инструментов этого UINavigationController.

Надеюсь, это поможет. Проверьте UIViewController Class Reference для получения дополнительной информации.

0 голосов
/ 18 октября 2011

В строке 1 вы отправляете сообщение в суперпредставление панели инструментов, чтобы скрыть его, что сделано таким образом, потому что тогда суперпредставление может делать любое изменение размера / макета, которое он хочет в лучшее время.

Контроллер навигации считывает панель инструментов из переменных self в строке 2, потому что контроллер навигации в настоящее время представляет self.

В строке 3 вы получаете доступ к самой панели инструментов, управляемой navigationController. Это часть панели инструментов, которая относится к себе, а не к навигационному контроллеру, поэтому навигационный контроллер не предлагает способов ее изменения, позволяя получить прямой доступ к панели инструментов и затем изменить ее.

Таким образом, вы получаете доступ к панели инструментов на разных уровнях, упрощая себя. В первой строке вам не нужно управлять отображением. Во второй и третьей строках вам не нужно управлять созданием / уничтожением.

...