presentedViewController, presentingViewController의 차이에 대해 보도록 하자.
핵심만 먼저 말하면 presentedViewController는 지금 ViewController가 띄우는ViewController,
presentingViewController는 지금 ViewController를 띄우는 ViewController다.
즉 ViewController A, B, C가 있다고 하고 A가 present로 B를 띄우고, B에서 present로 C를 띄운다고 하면
B의 presentedViewController는 C, presentingViewController는 A가 된다.
이제 가장 큰 차이를 알았으니 개념에 대해 좀 더 자세히 보도록 하겠다.
presentedViewController
애플의 공식문서에 따르면
presentedViewController는 인스턴스 프로퍼티로, 이(현재) ViewController에 의해 present된 View Controller를 의미한다. 혹은 뷰 컨트롤러 계층에서의 조상 중 한명이 된다.
만약 뷰 컨트롤러를 present(_:animated:completion:) 메서드를 이용해서 명시적으로나 암묵적으로나 modal처럼 뷰 컨트롤러를 띄우면, 이 메서드를 호출한 뷰컨트롤러의 이 프로퍼티는 present한 view controller가 된다. 만약 현재 뷰 컨트롤러가 다른 뷰 컨트롤러를 modal로 띄우지 않는다면, 이 프로퍼티의 값은 nil이 된다.
presentingViewController
얘도 마찬가지로 인스턴스 프로퍼티로, 이 뷰 컨트롤러를 띄운 뷰 컨트롤러를 의미한다.
위의 애와 반대로, 만약 뷰 컨트롤러를 present 메서드를 이용해서 present했을 때, 보여진 뷰 컨트롤러의 이 프로퍼티는 이 뷰 컨트롤러를 띄운 뷰 컨트롤러로 맞춰진다.
만약 뷰 컨트롤러가 modal로 띄워지지 않았지만 조상 중 하나는 띄워졌을 때, 이 프로퍼티는 조상을 띄운 뷰 컨트롤러를 포함한다. 만약 현재 뷰 컨트롤러나 이 조상들중 하나도 modal로 띄워지지 않았다면, 이 프로퍼티의 값은 nil이 된다.
'개발일기 > IOS' 카테고리의 다른 글
[Swift] - Animation 정리 1 (0) | 2024.03.15 |
---|---|
[Swift] - CollectionView 정리 (0) | 2024.03.15 |
[Swift] - ViewController 생명주기 (0) | 2024.03.15 |
[Swift] - IOS 앱 생명주기 (0) | 2024.03.15 |
[Swift] - View와 Layer 관계 (0) | 2024.03.15 |