k-coding
swift addChild 본문
swift addChild
앱을 구상하다보면 하나의 viewController위에 또 다른 viewController를 보여줄 때가 필요합니다.
그럴때 addChild를 사용하게 됩니다.
그치만 우리는 addSubView라는 기능도 알고있지만, 이것은 UIView를 추가할 때 사용하는 메소드이고,
지금 알아볼 addChild는 viewController를 추가할 때 사용하는 메소드이니 구분 해주셔야합니다.
이 메소드는 현재 viewController와 그 하위 viewController 매개 변수의 개체 간 부모-자식 관계를 만듭니다.
이로 인하여 현재 VC(viewController)에 하위 VC의 뷰를 내장할 수 있게 됩니다.
addChild는 아래와 같은 메서드가 필요합니다.
- addChild(_:)
- willMove(toParent:)
- didMove(toParent:)
addChild(_:)
직접적으로 하위VC를 상위VC에 부모-자식관계로 설정하는 메서드로
하나의 부모VC가 여러 자식VC를 가지는건 상관없지만
하나의 자식VC가 여러 부모VC를 가지는것은 안된다.
didMove(toParent:) && willMove(toParent)
위 메서드는 자식 VC가 부모VC에게 붙기 전,후 제거 전,후 를 알려주는 메서드 입니다.
이를 통하여 언제 부모VC에 자식VC를 붙이거나 제거해야되는지 설정이 가능합니다.
예시)
class ViewController: UIViewController {
let keyboardVC = KeyboardViewController()
let boardVC = BoardViewController()
override func viewDidLoad() {
super.viewDidLoad()
addChildren()
}
private func addChildren() {
// KeyboardViewController()를 부모VC인 ViewController의 자식으로 넣고 뷰를 추가함
addChild(keyboardVC)
keyboardVC.didMove(toParent: self)
view.addSubview(keyboardVC.view)
// BoardViewController()를 부모VC인 ViewController의 자식으로 넣고 뷰를 추가함
addChild(boardVC)
boardVC.didMove(toParent: self)
view.addSubview(boardVC.view)
}
부모 VC인 viewController에서 상단에는 BoardViewController의 view가
하단에는 KeyboardViewController의 view가 보임을 볼 수 있다.
'iOS > Swift 정리' 카테고리의 다른 글
Swift ) 날짜 표현 형식 (0) | 2022.07.05 |
---|---|
swift 2중배열 (0) | 2022.04.30 |
Swift becomefirstResponder, resignFirstResponder 키보드 호출 (0) | 2022.02.15 |
Swift [weak self] (0) | 2022.02.12 |
Swift @objc (0) | 2022.02.03 |
Comments