2014-11-04 2 views
3

При создании пользовательского контейнера UIViewController (UIViewController, который содержит другие UIViewControllers и их виды), который отвечает за вызов viewWillLayoutSubviews и viewDidLayoutSubviews? У моего класса контейнера есть два субконтроллера, из которых ни один из этих методов не вызван, когда он перемещается в родительский контроллер представления.Кто отвечает за вызов viewWillLayoutSubviews()/viewDidLayoutSubviews() в пользовательском контейнере UIViewController?

UIViewController-х beginAppearanceTransition(_:animated:) документирована как правильный путь, чтобы вызвать viewWillAppear(), viewWillDisappear(), viewDidAppear() и viewDidDisappear(), но я не вижу эквивалент viewWillLayoutSubviews()/viewDidLayoutSubviews().

Насколько я могу понять контроллер родительского вида (который в данном случае будет представлен через presentViewController(_:animated:completion:)) отвечает за вызов своих суб-контроллеров viewWillLayoutSubviews()/viewDidLayoutSubviews() в своей собственной реализации тех же методов. Структура, как представляется, называет эти методы при определенных обстоятельствах (например, когда вы устанавливаете свойство rootViewControllerUIWindow), но не другие (например, когда вы вызываете addChildViewController() в UIViewController).

Является ли это правильным, идиоматическим способом заниматься вещами?

ответ

3

, ответственный за вызов viewWillLayoutSubviews и viewDidLayoutSubviews?

Время выполнения. Вы никогда не должны называть эти методы самостоятельно.

+2

За исключением реализации 'супер'. –

+0

@IanMacDonald Хорошее добавление, спасибо. – matt

+0

Может быть, я должен быть более ясным. Если это время выполнения, то как вы его вызываете, чтобы называть их в объектах UIViewController внутри пользовательского контейнера? –

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