1

У меня есть UITableViewController, что выталкивает UIViewController с использованием UINavigationController:присутствует/dismissModalViewController вызывает UINavigationBar «Назад», чтобы проиграть анимацию

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

В detailViewController, я представляю модальное представление, когда пользователь нажимает кнопку (а MFMessageComposeViewController для отправки сообщения SMS), а затем отпустить его, как это:

[self presentModalViewController:smsViewController animated:YES]; 
... 
// user pushes Send or Cancel button on the view 
... 
[self dismissModalViewControllerAnimated:YES]; 

вид модальный SMS увольняет правильно, но теперь, когда я нажимаю кнопку «назад» на UINavigationBar, взгляды не анимировать назад к табличный вид. Детальный вид просто исчезает, и вид UITableViewController существует. Кнопка «Назад» оживляет и исчезает, а выбранная ячейка таблицы по-прежнему имеет эффект затухания синего цвета, но анимации просмотра нет.

Кто-нибудь знает, почему мнения не ожидают должным образом? Если я не открываю модальный вид SMS, анимация работает правильно, поэтому я уверен, что это вызвано каким-то образом модальным поведением.

Вот как мой взгляд Interface Builder расположение выглядит для этого Tab Bar Предмет:

View Arrangement

+0

Вы пробовали это без анимации? Я не нахожу причин, которые могут вызвать одну и ту же проблему. это очень распространенная практика. – Tarun

+0

Извините, я не уверен, что вы имеете в виду. Попробуйте что без анимации? Если я изменю любой из YES на NO из моих фрагментов кода, я не уверен, что это будет сделано. Это просто делает эти поведения не анимированными. – spurgeon

ответ

0

Я обнаружил свою проблему. Я использую пользовательский подкласс UITabBarController, который переопределяет -(void)viewWillAppear:(BOOL)animated с помощью некоторой пользовательской обработки вкладок. Однако в переопределенном методе я не вызывал [super viewWillAppear:animated]. Да, печальный день в моей жизни разработчиков. Мне все еще кажется странным, что это приведет к поведению, которое я испытал, но я уверен, что теперь это исправлено из-за этого изменения.

Интересно, что модальная анимация push/увольнения работает правильно без вызова [super viewWillAppear:animated] в симуляторе iPhone 4.3. Но это не работает в iPhone 5.0 или 5.1 симуляторах. (Я использовал не-MFMessageComposeViewController текст текстового поведения на симуляторе iPhone, так как SMS не поддерживается на симуляторе).

0

Пожалуйста, измените эту строку [self.navigationController pushViewController:detailViewController]; к

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

И проверить, является ли viewWillAppear и viewWillDisappear методы вашего DetailView в установлен на YES.

+0

К сожалению, я пропустил 'animated: YES' в моей копии/вставке для фрагмента кода. Теперь это исправлено. Интересно, когда я реализую '- (void) viewWillDisappear: (BOOL) анимированный' в detailViewController и печатаю «анимированное» значение, он меняет значение «НЕТ», когда модальное представление представлено и отображается. Почему это происходит, и как я могу изменить «анимированные» обратно на «ДА»? – spurgeon

+0

Вы устанавливаете '- (void) viewWillAppear: (BOOL) animated' to YES? Пожалуйста, установите для обоих способов метода мода значение ДА. –

+0

В detailViewController я устанавливаю оба '[self viewWillAppear: YES];' и '[self viewWillDisappear: YES];' после '[self presentModalViewController: smsModalView анимированные: YES];' и '[self rejectModalViewControllerAnimated: YES];' , но не имеет никакого эффекта. Другие предложения? Опять же, модальный вид анимирует отлично, а не detailView обратно в представление таблицы. – spurgeon

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

  • Нет связанных вопросов^_^