iOS - установить UIToolBarItem на UINavigationController

Я перетаскиваю панель инструментов в раскадровке и устанавливаю ее на своем контроллере навигации, но когда я запускаю свой код, его там нет, что-то мне не хватает?

РЕДАКТИРОВАТЬ:

Пробовал установить его в коде, а также в моем методе viewDidLoad:

UIBarButtonItem *rightBarButton = [[UIBarButtonItem alloc] initWithTitle:@"Map" style:UIBarButtonItemStyleBordered target:self action:@selector(viewMap)];
self.navigationItem.rightBarButtonItem = rightBarButton;

Тоже не сработает.

Вот как это настроено в моей раскадровке:

ОБНОВИТЬ:

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

2 ответа

Решение

UINavigationController уже имеет встроенную панель инструментов. Он имеет свойство toolBarHidden который установлен в YES по умолчанию, поэтому его обычно не видно. Если вы используете раскадровку, вы можете легко сделать видимой встроенную нижнюю панель инструментов, установив флажок "Показывает панель инструментов" в инспекторе, когда выбран контроллер навигации.

См. Документацию UINavigationController здесь для более подробной информации.

РЕДАКТИРОВАТЬ:

Хорошо, похоже, что вы пытаетесь сделать, это добавить правую кнопку к вашему контроллеру представления UINavigationItem, Чтобы сделать это в раскадровке, перетащите "Элемент панели кнопок" из библиотеки объектов на элемент навигации в вашем ViewController. Затем вы можете установить заголовок / стиль / и т.д. элемента панели кнопок. Если при запуске приложения ничего не отображается, убедитесь, что ваш ViewController правильно подключен с переходом к контроллеру навигации.

Также убедитесь, что вы добавляете элемент кнопки панели к элементу навигации контроллера представления, а НЕ к самому контроллеру представления. Вот как должна выглядеть установка в вашей раскадровке:

Чтобы добавить элемент на панель навигации, необходимо добавить Bar Button Item к элементу навигации, содержащемуся в контроллере представления. Перейдите к раскадровке, найдите правильный VC и найдите элемент навигации (он находится в иерархии, показанной в "сцене" контроллера навигации). Просто перетащите элемент панели кнопок в эту иерархию под элементом навигации или прямо на панель навигации на экране визуального компоновщика.

Контроллер навигации смотрит только на элемент навигации вашего VC, когда этот VC помещается в стек; следовательно, изменяя элемент навигации VC в viewDidLoad не имеет никакого эффекта

(Я делал это программно раньше, но у меня нет с собой кода, поэтому, возможно, я добавлю это позже...)

Другие вопросы по тегам