Проблема скрытия / отображения панели инструментов в главном представлении uisplitiview на iOS 6.0, портретный режим

Странная проблема возникает только на iOS 6.0. В портретном режиме iPad приложения на основе UISplitViewController главное представление основано на контроллере навигации. На первом контроллере представления главного представления были показаны кнопки панели инструментов, если я нажму второй контроллер представления и скрою панель инструментов, то после того, как вы откроете второй контроллер представления, кнопки на панели инструментов первого контроллера представления исчезнут навсегда. (То есть , была показана пустая панель инструментов). Кнопки панели инструментов инициализируются в viewDidLoad первого контроллера представления. Панель инструментов была скрыта путем вызова [self.navigationController setToolbarHidden: YES] в viewDidLoad второго контроллера представления, а панель инструментов была снова отображена путем вызова [self.navigationController setToolbarHidden: NO] в viewWillAppear первого контроллера представления.

Любое предложение? И как правильно скрыть / показать панель инструментов в контроллере навигации?

Кстати, это нормально на iOS 4.3, 5.1.1 и нормально в ландшафтном режиме iOS 6.0 на iPad. Эта проблема возникает только в портретном режиме iOS 6.0 на iPad.

Edit: на iPhone, ios 6.0 такая же проблема. Впрочем, на iPad с iOS 6.0 в альбомной ориентации все нормально.


person xiang    schedule 22.09.2012    source источник


Ответы (1)


Поскольку эта проблема также возникает на iPhone с iOS 6.0, возможно, она не связана с портретным режимом UISplitView (хотя ландшафтный режим UISplitView вполне подойдет).

Поэтому я сосредотачиваюсь на отображении / скрытии панели инструментов UINavigationController и этой теме (Панель инструментов в контроллере навигации ) решил мою проблему.

Я удалил код setToolBarHidden в viewDiDLoad и viewWillAppear и реализовал протокол делегата UINavigationController:

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    BOOL shouldHide = [viewController.toolbarItems count] == 0;
    [navigationController setToolbarHidden:shouldHide animated:animated];
}

Теперь это работает. Однако я до сих пор не знаю, почему исходный код просто не работает в iOS 6.0 в портретном режиме iPhone и iPad.

person xiang    schedule 23.09.2012