UITabbarController: есть ли способ переключить элементы панели вкладок на панель вкладок

Сценарий таков: я TabbarViewController, который содержит вкладку {A, B, C, D}. После того, как пользователь щелкнул вкладку: B, вместо вкладки {A, B, C, D} я хочу показать {E, F, G} в качестве элемента панели вкладок на панели вкладок.

Есть ли способ переключить набор элементов панели вкладок? Я новичок в iOS. Спасибо!

РЕДАКТИРОВАТЬ: я также пытался изменить self.tabbarcontroller.tabbar.items, но я получил исключение времени выполнения, в котором говорилось, что tabbar.items не может быть изменен напрямую.

\ РЕДАКТИРОВАТЬ Нашел способ решить этот сценарий: используйте навигационный контроллер и нажмите TabbarView, который использует {A, B, C, D}, и, если B коснулся, нажмите другой TabbarView на навигационный контроллер
@joelm Спасибо за вашу помощь!

Привет, Стеллит


person Stellit    schedule 30.07.2010    source источник


Ответы (1)


UITabBarController поддерживает массив ViewController, соответствующих кнопкам, которые видит пользователь. Вы можете изменить контроллер, но учтите, что это приведет к перезагрузке tabBarController всех контроллеров, которые могут быть не такими, как вы хотите.

person joelm    schedule 30.07.2010
comment
как поменять контроллер? Могу ли я изменить их обратно после этого? Или есть способ скрыть панель вкладок с элементом {A, B, C, D} и снова показать их, когда я захочу? - person Stellit; 30.07.2010
comment
Я настоятельно рекомендую вам прочитать документацию для UITabBarController, в ней говорится, что вы не можете изменить панель вкладок, она существует только для справки. Но вы можете менять контроллеры представления так часто, как хотите, и вы можете скрывать панель вкладок, когда захотите. Просто замените viewController в свойстве viewControllers. «Корневой вид» не может закрывать саму панель вкладок. (если бы это было так, вы бы никогда не смогли открыть панель вкладок.) Поэтому я предлагаю добавить новое представление, которое закрывает панель вкладок, а затем может быть удалено, когда вы хотите снова показать панель вкладок. - person joelm; 02.08.2010
comment
Нашел способ решить этот сценарий: используйте навигационный контроллер и нажмите TabbarView, который использует {A, B, C, D}, и если B коснулся, нажмите другой TabbarView на навигационный контроллер. Спасибо, joelm - person Stellit; 03.08.2010