화면의 직사각형 영역에 대한 내용을 관리하는 객체, UI를 구성하는데 사용되는 객체
화면에 보이는 모든 요소들의 기본 클래스
UIButton
UILabel
UIImageView
UIWebView
UIScrollView
등
아래와 같이 여러 UI컴포넌트들의 부모클래스가 되는 것이 UIView이다.
그렇기에 앱에서 흔히 볼 수 있는 Label, Image, Button 등 기타 인터페이스 요소를 표시하려면 UIView 하위클래스를 사용해야한다.
UI를 관리하는데 사용, 화면 하나를 관리하는 객체
모든 앱은 최소한 하나 이상의 뷰 컨트롤러를 가지고 있다.
xcode에서 프로젝트를 생성하면 기본적으로 ViewController파일 하나는 이미 존재한다.
UIViewController
UITableViewController
UICollectionViewController
터치, 드래그 등 User Interaction을 처리하고 다른 ViewController와 데이터 공유가 가능하다.
우리가 생성하는 주된 유형의 View Controller
화면을 구성하는 뷰들을 직접 구현하고 관리하며, 관련된 이벤트를 처리한다.
(Root View + 하위 View들)
ContentViewController 를 포함하고 있는 ViewController
하나 이상의 Child View Controller를 관리하고 레이아웃과 화면전환을 담당한다.
addChildViewController로 하위 ViewController를 지정해서 하위 ViewController를 가지고 있는 ViewController이다.
ContainerViewController는 ChildViewController의 내용을 관리하지 않고, 크기 조정 및 배치만 관리한다. 실제 화면 구성과 이벤트 관리는 각 Child View Controller에서 한다.
UISplitViewController- iPadOS
UINavigationController
UITabBarController
UIPageViewController
등
UINavigationController는 containerViewController중 하나로 Stack 기반이며, 제공하는 navigation 인터페이스로 1개 이상의 viewController 를 관리할 수 있다.
Stack 기반이므로 push, pop을 통해 보여질 viewController를 결정한다.
💡 stack 구조란?
LIFO(Last In First Out)의 특징을 가지는 자료구조
앱 상단에 타이틀, 뒤로가기, 설정등 특정 영역
해당 navigationBar 를 통해 굳이 UI를 추가하거나 세팅할 필요없이 해당 view controller 를 위한 UI를 설정할 수 있다.
앱에서 아래쪽에 공유하기나 여러 버튼들이 있는 영역
기본적으로 navigation controller 에서는 숨김처리 되어 있지만, 숨김을 해제하고 해당 영역을 설정할 수 있다.
특정 Event에서 사용할 수 있는 delegate가 선언되어 있다. 보통 특정 view controller가 보여지거나, 이동간 애니메이션을 설정하기 위해 사용한다.
좋은글 감사합니다 :)