반응형
ChildViewController로 추가/제거 될 때 willMove, didMove 메소드가 자동으로 호출됩니다.
코드로 ContainerViewController를 구현했다면 child를 추가할 땐 didMove, 제거할 땐 wilMove 메소드를 직접 호출해주어야 합니다.
트랜지션도 커스텀했다면 트랜지션이 종료된 후 적절한 시점에 메소드를 호출해주면 됩니다.
참고로, child를 제거할 때 didMove가 자동으로 중복되어 호출될 수 있습니다.
func addChild() {
let viewController = ChildViewController()
addChildViewController(viewController)
// addChild 후 호출, 커스텀 트랜지션이 있다면 완료 후에 호출
viewController.didMove(toParentViewController: self)
viewController.view.frame = containerView.bounds
containerView.addSubview(viewController.view)
}
func removeChild() {
for viewController in childViewControllers {
// 루트 뷰를 계층에서 제거하기 전에 호출
viewController.willMove(toParentViewController: nil)
viewController.view.removeFromSuperview()
viewController.removeFromParentViewController()
}
}
반응형
'iOS' 카테고리의 다른 글
[iOS] Swift 참조 타입이 앱 기동 시간에 안 좋은 영향을 끼치는 이유 (번역) (1) | 2021.03.14 |
---|---|
[iOS] DispatchSourceTimer로 일시정지 구현이 쉬운 타이머 만들기 (0) | 2020.04.15 |
[iOS] 클래스의 모든 프로퍼티들이 궁금할 땐? (0) | 2020.02.29 |
[iOS] NSPredicate 문법 정리 (1) | 2020.01.27 |
[iOS] fullScreen? overFullScreen? over가 붙으면 무엇이 다를까 (UIModalPresentationStyle) (0) | 2020.01.15 |