5

мне не повезло с поиском этого, так что здесь мы идем;)popViewController/viewWillAppear не анимированы прошивкой 5

У меня есть UIViewController с обычаем UINavigationBar, который толкает другой UIViewController как подвид.

Все работает нормально, за исключением случаев, когда я нажимаю кнопку назад на подземелье. Предпросмотр (первый) вид отображается правильно, но не анимирован. Анимация UINavigationBar правильная, сразу же переключаются представления.

Функция - (void)viewWillAppear:(BOOL)animated первого UIViewController вызывается с NO для animated. Это происходит только тогда, когда я тестирую iOS 5, а не iOS 4.

Кто-нибудь знает, как это исправить?

Благодарим за помощь! Ханнес

UPDATE 1

Я только что удалили весь пользовательский код и просто использовал простые UINavigationBar (так что никаких дополнительных настроек) и по-прежнему не работает с прошивкой 5. Это мой код я использую в первый ViewController нажать вторую ViewController:

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

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

Любая помощь будет оценена! Благодаря!

UPDATE 2

Я чувствую, что я не получаю ближе к этому вопросу, но до сих пор нет решения:

Я просто добавил обычай UINavigationController, где я просто позвонить [super popViewControllerAnimated:animated]. Это правильно называется get (анимированный - ДА), но viewWillAppear первого UIViewController получает NO в качестве значения для анимированных ...

ответ

6

У меня была аналогичная проблема сегодня, когда UIViewController получал NO в viewWillAppear, за исключением стандартной UINavigationBar и UINavigationController.

Это оказалось из-за ручного вызова viewWillAppear:YES где-то его не должно было быть. This item предполагает, что это также может быть вызвано неправильным вызовом метода super (например,[super viewWillAppear:animated] вместо [super viewDidAppear:animated] внутри viewDidAppear).

Что касается использования пользовательского UINavigationBar, я наткнулся на эту ссылку сегодня, что может помочь вашему делу: http://sloshire1.posterous.com/simple-fix-for-viewwillappear-in-ios5

+2

О, боже мой, спасибо тебе! Я сходил с ума! я только что обнаружил, что в 'viewDidAppear' в моем пользовательском' UITabBarController' был '[super viewWillAppear]'. Еще раз спасибо! – Hannes

+0

@ Ханнес благодарит меня за работу @Hannes, вы используете 'Rumex CustomTabbar (RXCustom Tabbar)' Я просто спрячу '[super viewWillAppear]' в viewDidAppear моего пользовательского UITabBarController. это создает любую проблему? что с этим было проблемой? –

+0

@ Ханнес, я открываю 'настоящий modal viewcontroller', в то время я получаю такую ​​же проблему. у тебя есть идеи? –

0

Apple реализовала официальные способы создания пользовательских навигационных панелей в iOS 5. К сожалению, они также нарушили большую часть неофициальные способы сделать это в iOS 4. iOS 5 больше не будет называть drawRect. Вам нужно иметь два способа сделать это: один для iOS 5 и выше, используя новые вызовы, и один для iOS 4 и более ранних версий, используя старые вызовы. Ознакомьтесь с документацией для пользовательских навигационных панелей в iOS 5 для получения дополнительной информации.

+0

Привет Оуэн, спасибо за попадание в это. Я подклассифицировал 'UINavigationBar' и связал его в .xib-файле, чтобы получить пользовательский заголовок - он работает для iOS 4 и 5. Тем не менее я просто удалил пользовательский' UINavigationBar' и только обычный бар и все тот же эффект, анимированные представления правильно отображая подпункт, но сразу же переключайтесь при нажатии кнопки «Назад». – Hannes

0

Вы пытались удалить весь свой код и перейти с помощью встроенной панели навигации? Сохраняется ли такое поведение? Таким образом, вы можете проверить, не работает ли ваш настраиваемый бар с переходом.

+0

Спасибо, я только что сделал это, но все же первое представление появляется без анимации ... Я обновил свой вопрос. – Hannes

Смежные вопросы