UIKit 02 : UIViewController

UIViewController란

  • UI(유저 인터페이스)를 관리하는 데 사용되는 객체
    → UIViewController라는 클래스로 정의되어 있고 클래스를 사용해서 사용자 인터페이스 요소들과 로직을 관리하고, 다양한 뷰와 관련된 작업들을 처리한다. 예를 들어 UI 요소(button, label 등)와 이 요소의 동작들을 코드로 구현하여 제어할 수 있다.

UIViewController에서 할 수 있는 것들

  • 뷰의 라이프사이클 관리
    → 뷰 컨트롤러가 화면에 처음 표시되거나 화면에서 사라지는 시점 등 이벤트 처리 가능.
    이를 통해 초기 설정, 데이터 로딩, 메모리 관리 등의 작업을 수행할 수 있다

  • 화면 전환 관리
    → 앱 내 다른 뷰 컨트롤러로 화면전환도 UIViewController를 이용하여 할 수 있다.

  • 데이터 관리
    → 데이터를 처리하고 관리할 수 있으며, 데이터의 상태에 따라 화면의 뷰들을 업데이트하거나, 다른 UIViewController와도 데이터를 공유할 수 있다.

  • 사용자의 상호작용 처리
    → 예를 들면 터치 이벤트(touch event)나 드래그 이벤트(drag event) 등을 처리. 이를 통해 사용자의 입력에 따라 특정 처리를 하거나, 화면을 업데이트하거나 할 수 있다.

UIViewController 사용방법

  1. Storyboard에서 뷰 컨트롤러 관리
    → Storyboard(iOS 앱의 UI를 디자인할 수 있는 인터페이스 빌더)에서 뷰 컨트롤러를 시각적으로 구성 / 관리.

  2. 생성자 코드를 통해서 객체를 생성
    → 뷰 컨트롤러를 직접 코드로 생성하고 관리

    UIViewController의 인스턴스 생성 예
    import UIKit
    
    
    class MyViewController: UIViewController {
     // (내용 작성)
    }
    
    let myViewController = MyViewController()
    

ViewController 종류

  • Container View Controller

    → 다른 뷰 컨트롤러들(Content view controller)을 포함하고 관리하는 뷰 컨트롤러.
    하나 이상의 자식 뷰 컨트롤러를 내부에 가지고 있고, 이들을 관리하고 조정하는 역할

    • UINavigationController

      navigation_interface_2x_8f059f7f-2e2f-4c86-8468-7402b7b3cfe0

      여러 개의 뷰 컨트롤러를 스택 형태로 관리하여 화면 전환을 제공하는 뷰 컨트롤러

    • UITabBarController

      1bc595c9-a817-4057-b8b9-ecaa4e8647de

      탭바(탭 바) 형태의 사용자 인터페이스를 제공하는 뷰 컨트롤러

    • UISplitViewController

      ui-split-view-overview~dark@2x

      두 개의 하위 뷰 컨트롤러를 마스터(Master)와 디테일(Detail)로 나누어 화면에 표시하는 뷰 컨트롤러(주로 iPadOS의 대형 화면에서 사용)

    • UIPageViewController

      giphy-2

      스와이프 하거나 탭 하는 등 사용자가 제스처를 사용하여 직접 여러 페이지를 전환할 수 있는 UI 제공하는 뷰 컨트롤러 주로 책 페이지 넘기는 것 같은 방식으로 화면 전환.

      💡 UINavigationController와 UITabBarController는 특히 현업에서 가장 많이 쓰이는 컨테이너 뷰 컨트롤러이다.

  • Content View Controller

    → 단일 뷰나 특정 콘텐츠를 관리하는 뷰 컨트롤러들

    • UIViewController

      가장 기본적인 뷰 컨트롤러로, 단일 뷰와 연결되어 있음

    • UITableViewController

      테이블 뷰를 표시하는 데 특화된 뷰 컨트롤러

    • UICollectionViewController

      컬렉션 뷰를 표시하는 데 특화된 뷰 컨트롤러