последовательность обратного вызова viewDidAppear и viewDidDisappear между двумя контроллерами представления - PullRequest
3 голосов
/ 22 февраля 2011

Как я знаю, есть по крайней мере два способа представления UIViewController на другом UIViewController, во-первых, используется presentModalViewController: animated: на UIViewController, другой использует pushViewController: animated: на UINavigationController, кажется, когда 2 контроллера представления изменяют свой внешний вид , последовательность вызова обратных вызовов появляются / исчезают разные. Ниже приведен пример, A является UINavigationController, а B является обычным контроллером представления, фактическая последовательность обратного вызова:
(1) A с использованием presentModalViewController: анимированный: показать B:

[B viewWillAppear];  
[A viewWillDisappear];  
[B viewDidAppear];  
[A viewDidDisappear];

(2) A с помощью pushViewController: animated: показать B:

[A viewWillDisappear];  
[B viewWillAppear];  
[A viewDidDisappear];  
[B viewDidAppear];

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

Ответы [ 2 ]

0 голосов
/ 22 февраля 2011

Вы определенно захотите реализовать некоторую форму синхронизации, чтобы обеспечить выполнение того, что вы хотите сделать. Полагаться на последовательность вызовов этих функций Apple просто напрашивается на неприятности.

0 голосов
/ 22 февраля 2011

UIKit должен работать в основном потоке, поэтому я предполагаю, что последовательность стабильна, для текущей версии SDK . Однако до тех пор, пока это поведение не задокументировано (и оно не известно мне), я считаю, что оно может быть изменено без уведомления.

Мне просто любопытно; зачем вам нужна детерминированная последовательность этих методов? Возможно, вы можете найти обходной путь (который может быть лучшим способом сделать это).

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