Как узнать, когда dismissModalViewControllerAnimated инициируется, а также когда это сделано? - PullRequest
6 голосов
/ 13 июня 2009

Есть ли способ узнать, когда dismissModalViewControllerAnimated инициируется и когда он завершается (например, идиома для viewWillAppear и viewDidAppear)? В отличие от других анимаций, у этой, похоже, нет делегата, который говорит вам.

Ответы [ 3 ]

10 голосов
/ 13 июня 2009

Да, и проще, чем вы думаете.

При вызове dismissModalViewControllerAnimated: базовое представление (которое должно появиться) получит сообщение viewWillAppear и сообщение viewDidAppear.

Предупреждение: убедитесь, что ваши контроллеры вида подключены правильно или эти сообщения потеряны.

5 голосов
/ 15 октября 2011

Я боюсь, что viewWillAppear и viewDidAppear не всегда работают. на iPhone они делают, на iPad они не могут. если представленный UIViewController не представлен в полноэкранном режиме (например, если он представлен в виде листа формы), родительское представление не получит функции жизненного цикла viewWillAppear или viewDidAppear. к сожалению, единственный способ, который я нашел, - это создать собственное делегатское сообщение, которое будет вызываться при вызове dismissModalViewControllerAnimated (эфир по ссылке или с уведомлением)

1 голос
/ 07 ноября 2012

Вы можете использовать методы отображения вида. И если вам нужно, чтобы что-то произошло после завершения анимации, вы можете использовать [object performSelector:@selector(selector) withObject:anotherObject afterDelay:0]. Я не знаю точно, почему, но действие будет запланировано в текущем цикле выполнения, но после завершения анимации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...