JuSeok

UIViewController

앱 화면의 콘텐츠를 표시하는 로직과 관리를 담당하는 객체?

바로 UIViewController가 그 역할을 한다.

애플에서는 UIViewController를 아래와 같이 설명한다.


UIKit 앱의 뷰 계층 구조를 관리하는 개체입니다.

뷰 컨트롤러는 앱 내부 구조의 기초이다. 모든 앱에는 적어도 하나의 ViewController가 있으며 대부분의 앱에는 여러개의 ViewController가 있다. 각 뷰 컨트롤러는 인터페이스와 기본 데이터 간의 상호작용을 관리한다.

앱에서 매우 중요한 역할을 하기 때문에 ViewController는 거의 모든 작업의 중심에 있다. ViewController의 주요 역할로는 View 관리, 이벤트 처리, 뷰 전환 등이 있다.


ViewController에는 두 가지 유형이 있다.

  • Content ViewController는 앱 콘텐츠의 개별 부분을 관리하며 사용자가 만드는 주요 유형의 ViewController다.
  • Container ViewController는 다른 뷰 컨트롤러에서 정보를 수집하고 탐색을 용이하게 하거나 해당 뷰 컨트롤러의 콘텐츠를 다르게 표시하는 방식으로 정보를 제공한다.

대부분의 앱은 두 가지 유형의 ViewController가 혼합되어 있다.

Content ViewController?

가장 대표적인 예로 UIViewController를 상속받아 화면에 보여줄 새로운 뷰를 구현할 때를 들 수 있다.

class MainViewController: UIViewController
{
    @IBOutlet weak var textLabel:UILabel?

    override func viewDidLoad()
    {
        super.viewDidLoad()

        textLabel?.text = "텍스트 입니다만..."
    }
}

위 코드를 보면 MainViewControllerContent ViewController라고 말할 수 있다.


Container ViewController?

보통 직접 무언가를 보여주는 역할은 없으며, ViewController 간에 부모-자식 관계를 형성하여 자신만의 방식으로 자식을 관리하는 역할을 맡는 ViewController이다. UINavigationController를 예로 들 수 있다.



위 사진과 같이 하위 컨트롤러들을 관리하는 역할을 하는 놈은 Container ViewController라고 한다.

Container ViewController 사용하는 가장 큰 이유는 로직을 분리하여 단일 책임원칙을 지키기 위해서라고 생각한다. 예를 들어 UINavigationController 같은 경우에는 라우팅 역할을 하는 VC를 따로 분리해 나중에 있을 유지보수나 테스트에서 이점을 가져갈 수 있다.


참고자료

Tags