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];

В моем viewController я попробовал это:

UIToolbar *toolbar = [self.navigationController.view viewWithTag:TOOLBAR_TAG];
toolbar.barStyle = UIBarStyleBlack;

Все же это дает мне ошибку при высказывании, что панель инструментов на моем случае является объектом "UILayoutContainerView", не объектом UIToolbar. Следовательно эта идея, кажется, тупик.

Как другие решали эту проблему?

11
задан Robin 22 February 2010 в 16:47
поделиться

1 ответ

UINavigationController уже имеет панель инструментов. Просто используйте

[self.navigationController setToolbarHidden:NO];

в самом верхнем контроллере представления и

[self setToolbarItems:items];

во всех ваших контроллерах представления, где items - это NSArray элементов панели инструментов этого контроллера представления.

EDIT: Что касается того, почему ваше решение не работает: ваш TOOLBAR_TAG, вероятно, не уникален, поэтому вы получаете другое вложенное представление. Но, как я уже сказал, вы должны использовать включенную панель инструментов в любом случае.

42
ответ дан 3 December 2019 в 01:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: