UINavigationBar загадочно исчезает в iOS 7

Я начал проект с Xcode 4, и сегодня я обновил свой Xcode до 5. Запуск того же проекта в симуляторе iOS7 выявил некоторые интересные (также разочаровывающие) проблемы.

Таким образом, в моем приложении есть боковая панель, на которую пользователь может нажать, и в зависимости от того, на какую кнопку он нажимает, я бы создал новый VC, используя этот код.

YMGeneralInfoTableViewController *generalInfoTableVC = [self.storyboard instantiateViewControllerWithIdentifier:@"generalInfoTableVC"];

Затем поместите этот новый VC в стек навигации с помощью этого кода.

[self.navigationController pushViewController:generalInfoTableVC animated:YES];

В iOS 6 все работало нормально. Однако в iOS7 панель навигации волшебным образом исчезает.

Вот снимок экрана перед отправкой нового VC введите здесь описание изображения

Вот после нажатия: введите здесь описание изображения

Как видите, между местом, где начинается содержимое, и панелью состояния, в том месте, где должна быть панель навигации, есть разрыв.

Я также снова протестировал этот код на своем устройстве с iOS 6, на этом устройстве с iOS 6 все по-прежнему в порядке. Поэтому я не уверен, что здесь происходит.

Кроме того, если я попытаюсь зарегистрировать navBar/navigationItem контроллера, где панель навигации исчезла, я получаю правильную ссылку на navBar, что означает, что она не равна нулю, а просто не отображается.

Однако методsetHideNavigationBar:NO Animated:NO также не вернул навигационную панель. Кто-нибудь знает, что происходит?


person Enzo    schedule 18.09.2013    source источник
comment
Эти скриншоты должны быть обрезаны или это прямо из симулятора?   -  person Kyle Clegg    schedule 19.09.2013
comment
да, извините, я захватил только часть симулятора, так что да, они должны быть отрезаны.   -  person Enzo    schedule 19.09.2013
comment
О, хорошо, я едва мог видеть контраст с панелью навигации и задавался вопросом, чего еще мне не хватало. Я вижу это сейчас.   -  person Kyle Clegg    schedule 19.09.2013
comment
Да, извините за это. На самом деле я нашел временное решение, которое просто включает настройку navBar.translucent = NO. Но это приводит и к другим проблемам, например. мой пользовательский значок меню не отображается.   -  person Enzo    schedule 19.09.2013
comment
попробуйте переключить прозрачность панели навигации. self.navigationController.navigationBar.translucent = НЕТ; // ДА   -  person Khaled Annajar    schedule 08.10.2013


Ответы (2)


Кстати, я нашел решение для этого.

Это связано с тем, что в AppDelegate вы, возможно, уже установили некоторые изменения внешнего вида для панели навигации.

Итак, что я предлагаю вам сделать, это сначала проверить ОС устройства, прежде чем устанавливать собственный внешний вид для панели навигации?

- (BOOL)isOS7
{
    float currentVersion = 7.0;

    if ([[[UIDevice currentDevice] systemVersion] floatValue] < currentVersion)
        return NO;

    return YES;
}

Поэтому, если вы вернете «НЕТ», тогда только вы сделаете все возможное, что можно использовать для

person Keith Yeoh    schedule 04.10.2013

Оформить заказ с ограничениями Autolayout,

Я пробовал то же самое, используя iOS 6 и iOS 7, отображается моя панель навигации. Все еще проверяйте ограничения Autolayout, я сделал это без autolayout

person Mehul Thakkar    schedule 23.09.2013
comment
Я отключил авторазметку, и она по-прежнему ведет себя так. - person Enzo; 24.09.2013