UIToolbar на каждой странице UINavigationController
У меня есть приложение, которое работает на UINavigationController. Теперь я хотел бы добавить элемент UIToolbar в конец каждого экрана. Панель инструментов внизу должна быть настраиваемой для ViewController, которая в настоящее время отображается. Моя первая идея состояла в том, чтобы просто добавить панель инструментов в представление navigationController и пометить ее, в viewController я подумал, что тогда я смогу получить элемент UIToolbar. У меня есть следующий код:
В моем AppDelegate:
// Get instance of Toolbar (navController is an instance of UINavigationController and TOOLBAR_TAG a constant)
UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 440, 320, 40)];
toolbar.tag = TOOLBAR_TAG;
[navController.view addSubview:toolbar];
В моем представлении Controller я пробовал это:
UIToolbar *toolbar = [self.navigationController.view viewWithTag:TOOLBAR_TAG];
toolbar.barStyle = UIBarStyleBlack;
Но это дает мне ошибку, говоря, что панель инструментов в моем случае является объектом "UILayoutContainerView", а не объектом UIToolbar. Следовательно, эта идея кажется тупиковой.
Как другие решают эту проблему?
Ответы
Ответ 1
У UINavigationController уже есть панель инструментов. Просто используйте
[self.navigationController setToolbarHidden:NO];
в верхнем контроллере представления и
[self setToolbarItems:items];
во всех контроллерах вашего вида, где элементы являются NSArray
элементов панели инструментов этого вида.
РЕДАКТИРОВАТЬ: Что касается того, почему ваше решение не работает: ваш TOOLBAR_TAG
, вероятно, не уникален, поэтому вы получаете другое подзаголовок. Но, как я уже сказал, вы все равно должны использовать панель инструментов.
Ответ 2
Чтобы легко отобразить нижнюю панель инструментов UINavigationController, вы можете щелкнуть галочку "Показать панель инструментов", доступную от инспектора с выбранным объектом "Контроллер навигации". Надеюсь, это может помочь:)
Ответ 3
С точки зрения дизайна я бы не рекомендовал это, ЕСЛИ вы не знаете, что панель инструментов будет присутствовать для каждого представления в стеке. Во-вторых, вы начинаете скрывать/показывать панель инструментов для разных представлений в стеке, вы увидите, что эта анимация (панель инструментов слайд-шоу/в виде) не оживляет, как вы ожидаете.
Если вам нужны панели инструментов для определенных представлений, поместите их в эти представления, так как панель инструментов контекстуальна для представления, а не для навигационного стека в целом.