k-coding

swift addChild 본문

iOS/Swift 정리

swift addChild

chkhn_oiiu 2022. 3. 13. 16:50

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