Добавление и удаление UIBarButtonItems в UINavigationBar из нескольких представлений

#objective-c #ios #uinavigationcontroller #uibarbuttonitem #mainwindow

#objective-c #iOS #uinavigationcontroller #uibarbuttonitem #mainwindow

Вопрос:

В настоящее время у меня есть главное окно, настроенное как UINavigationController (также является контроллером корневого представления), и у меня есть два представления. Первое представление — это экран входа в систему, а второй экран — экран просмотра таблицы. Чего бы я хотел, так это чтобы отображались разные UIBarButtonItems в зависимости от того, какой экран отображается. Например, когда отображается экран входа в систему, я хочу, чтобы на панели навигации отображалась левая кнопка (более конкретно, это была бы кнопка настроек перед входом в систему). Как только пользователь войдет в систему, я хочу, чтобы на левой кнопке было написано «Выход», а на правой — кнопка перезагрузки. Я пробовал программно добавлять кнопки, но они не отображаются. Есть предложения?

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

Ответ №1:

У всех подклассов UIViewController есть свойство, вызываемое navigationItem . Пока он доступен только для чтения, вы можете изменять его свойства. Так что в LoginViewController вы бы сделали self.navigationItem.leftBarButtonItem = /* Code to create the bar button */ и аналогично в TableViewController . Дайте мне знать, если вам понадобится больше деталей.

Комментарии:

1. Понятно, я думаю, что буду придерживаться этого подхода. Я действительно читал об этом, но у меня ничего не получилось. Спасибо!