При создании пользовательского контейнера UIViewController
(UIViewController
, который содержит другие UIViewControllers и их виды), который отвечает за вызов viewWillLayoutSubviews и viewDidLayoutSubviews? У моего класса контейнера есть два субконтроллера, из которых ни один из этих методов не вызван, когда он перемещается в родительский контроллер представления.Кто отвечает за вызов viewWillLayoutSubviews()/viewDidLayoutSubviews() в пользовательском контейнере UIViewController?
UIViewController-х beginAppearanceTransition(_:animated:) документирована как правильный путь, чтобы вызвать viewWillAppear()
, viewWillDisappear()
, viewDidAppear()
и viewDidDisappear()
, но я не вижу эквивалент viewWillLayoutSubviews()
/viewDidLayoutSubviews()
.
Насколько я могу понять контроллер родительского вида (который в данном случае будет представлен через presentViewController(_:animated:completion:)) отвечает за вызов своих суб-контроллеров viewWillLayoutSubviews()
/viewDidLayoutSubviews()
в своей собственной реализации тех же методов. Структура, как представляется, называет эти методы при определенных обстоятельствах (например, когда вы устанавливаете свойство rootViewController
UIWindow
), но не другие (например, когда вы вызываете addChildViewController()
в UIViewController
).
Является ли это правильным, идиоматическим способом заниматься вещами?
За исключением реализации 'супер'. –
@IanMacDonald Хорошее добавление, спасибо. – matt
Может быть, я должен быть более ясным. Если это время выполнения, то как вы его вызываете, чтобы называть их в объектах UIViewController внутри пользовательского контейнера? –