Панель инструментов в контроллере навигации - PullRequest
3 голосов
/ 29 ноября 2011

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

 [self.navigationController setToolbarHidden:NO];

 //Create a button
     NSArray *toolbarItems = [NSArray arrayWithObjects:
                              [[UIBarButtonItem alloc] initWithTitle:@"Help" style:UIBarButtonItemStyleBordered target:self action:@selector(helpButton:)]
                              ,nil];

Единственная проблема заключается в том, что панель инструментов отображается, когда имеется контроллер навигации (несколько других видов).Есть ли способ ограничить панель инструментов только одним видом?

Спасибо

Ответы [ 2 ]

5 голосов
/ 29 ноября 2011

Цитировать Ссылку класса UINavigationController :

Панель инструментов навигации по умолчанию скрыта, но вы можете показать ее для своего интерфейса навигации, вызвав метод setToolbarHidden:animated: объекта вашего контроллера навигации. Если не все ваши контроллеры представления поддерживают элементы панели инструментов, ваш объект-делегат может вызвать этот метод, чтобы переключить видимость панели инструментов во время последующих операций push и pop.

Итак, установите делегата для вашего контроллера навигации. В вашем делегате navigationController:willShowViewController:animated: сделайте что-то вроде этого:

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    BOOL shouldShowToolbar = (viewController == theViewControllerThatNeedsAToolbar);
    [navigationController setToolbarHidden:shouldShowToolbar animated:animated];
}
1 голос
/ 02 марта 2012

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

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    BOOL shouldHide = [viewController.toolbarItems count] == 0;
    [navigationController setToolbarHidden:shouldHide animated:animated];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...