티스토리 뷰

반응형

 

 

 


UIViewController
didMove(toParent:)

UIViewController 인스턴스의 메서드로 didMove(toParent:)가 존재합니다.

해당 메서드는 다른 UIViewController, PageViewController TabBarController 등의 컨테이너 뷰 컨트롤러에 다른 UIViewController가 추가/삭제 된 후에 호출이 됩니다. 

 

 


Declaration
didMove Method 선언방식

didMove는 UIViewController의 인스턴스 메서드로, UIViewController 인스턴스로부터 접근해서 사용할 수 있습니다.

예를들면 childViewController.didMove(toParent: self) 와 같은 방식으로 부모 ViewController를 인자로 넣어서 호출합니다. 

 

 


Parameters
didMove method 인자

앞서 말했듯이, didMove 메서드는 인자로 부모 ViewController를 넣어주어야 합니다.
사용 예시를 들자면, [자식 뷰 컨트롤러].didMove(toParent: [부모 뷰 컨트롤러]) 와 같은 방식으로 사용될 수 있습니다.

결과적으로, didMove의 사용은 자식 ViewController가 부모 ViewController로부터 추가, 삭제 되는 등의 상황에서 반응할 수 있도록 해줍니다. 

 

 


didMove(toParent:) method 사용하기

개발자들은 추가해서 사용 될 컨테이너 뷰컨트롤러로부터  반응하기 위해서 해당 메서드 didMove를 오버라이드에서 사용할 수 있습니다. 

만약 자체적으로 컨테이너 뷰컨트롤러를 구현하고자 한다면, 부모 뷰컨트롤러에 addChild(_:)를 통해 다른 자식 뷰컨트롤러가 추가된 이후에 didMove(toPArent:) 메서드를 호출해주어야만 합니다.

removeFromParent() 메서드는 컨테이너 뷰컨트롤러로부터 자식 뷰컨트롤러가 제거될 때 해당 자식 뷰컨트롤러의 didMove(toParent:) 메서드를 자동적으로 호출하게 됩니다.

 

 

didMove(toParent:)를 사용하는 상황은 어떻게 될까요? 앞서 말했듯이 자식 뷰컨트롤러가 컨테이너 뷰컨트롤러 내에서 상호작용을 해야할 때 사용됩니다. 

 

 


일반적인 didMove(toParent:) 메서드의 사용 예시를 보자면 위와 같겠습니다. 

1. 부모 뷰컨트롤러에서 addChild() 메서드를 호출합니다. 이때 자식 뷰컨트롤러를 인자로 넘겨서 자식으로 추가합니다.  
2. 원하는 크기, 위치로 자식 뷰컨트롤러의 frame을 설정합니다. 
3. 자식 뷰컨트롤러의 메인뷰 레이아웃을 배치합니다. 제약도 적절하게 설정해줍니다.
4. 이 후에 자식 뷰컨트롤러에서 didMove(toParent: [부모 뷰컨트롤러]) 를 호출해줍니다. 이때 인자값으로 부모뷰컨트롤러를 설정해줍니다. 

 

 

반응형
댓글
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함