Подтвердить что ты не робот

IOS 5: -viewWillAppear не вызывается после отклонения модального iPad

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

AddName *add = [[AddName alloc] initWithNibName:@"AddName" bundle:nil]
add.modalPresentationStyle = UIModalPresentationFormSheet;

[self presentModalView:add animated:YES];

И после моей работы я использую следующий код, чтобы вернуться к основному виду.

[self dismissModalViewControllerAnimated:YES];

Поэтому он используется для вызова -viewWillAppear по умолчанию.

Моя проблема в том, что

Он отлично работал с iOS4.3.

Но он не работает с iOS5.

Что мне делать? Или это ошибка в iOS5?

4b9b3361

Ответ 1

-viewWillAppear гарантируется только в тех местах, где также был вызван -viewWillDisappear. Для большинства модальных окон на iPad это не так, поскольку они не скрывают всю страницу.

Решение вашей проблемы будет зависеть от того, что вам нужно для -viewWillAppear, но в общем случае вам, скорее всего, нужно будет позвонить напрямую из того же места, где вы отклоните контроллер модального представления.

Одним из распространенных механизмов для этого, особенно в тех случаях, когда вы можете использовать тот же вид модальности в другом месте, является предоставление модульному контроллеру представления делегата, который вызывается, когда представление вот-вот исчезнет. Это даст вам возможность принимать ответы из модального окна или даже просто принудительно перезагрузить данные в представлении делегата.

Надеюсь, что это поможет.

Ответ 2

iOS 5 определенно изменил свои вызовы на viewWillAppear и viewWillDisappear. Например, subviews (View Controller views в качестве подзадач, чтобы быть точным) в UIScrollView, viewWillDisappear вызывается, когда вы нажимаете другой контроллер представления в стек. Однако, когда контроллер вида вызывается, viewWillAppear не вызывается. Эти методы никогда не вызывались в iOS 4 на UIScrollView subviews.

Это странное поведение для меня. Поделитесь этим тем, что независимо от того, что должно произойти, если вы можете положиться на это в iOS 4, он не должен работать по-разному в iOS 5. В большинстве случаев я понятия не имею, в каком конкретном случае каждый вызов, Я обычно тестирую и ошибаюсь, поскольку я в кодировке зоны. Если он работает так, как мне нравится, я продолжаю. Затем iOS 5 входит и бросает крутой мяч во все.

Я также испытал, когда представление UINavigationController's является подвью, а ViewController помещается в стек контроллера навигатора, viewWillAppear никогда не вызывается в iOS 4, но вызывает вызов в iOS 5. Go figure,

Ответ 3

У меня была та же проблема. Я обнаружил, что viewWillAppear не вызывается после отклонения модальности, но viewDidAppear есть. Поэтому просто попробуйте viewDidAppear.