1. View Controller
- 뷰 컨트롤러 역할 3가지
- Content View Controller와 Container View Controller
- 뷰 컨트롤러 생성
let vc = UIVIewController()
2. View Management
- Root View
- Superview와 Subview
- 인터페이스 빌더가 제공하는 뷰 계층 관리 기능
- 뷰 계층 관리 API
3. View Controller Life Cycle
-
뷰 컨트롤러 라이프 사이클
-
콜백 메소드 호출 순서
-
콜백 메소드 구현 패턴
4. Orientation and Rotation
- Device Orientation
- Interface Orientation
- Rotation 이벤트 처리
- 컨테이너 유무에 따른 이벤트 처리
- 선호하는 방향 설정
Container View Controller
: Navigation Controller, tab Controller
- Container View Controller 생성
- Custom Container View Controller 구현
- 스토리보드에서 Child VC 지정
- 뷰 컨트롤러 계층 관리
- 계층 이동 이벤트 처리
Navigation Controller
Navigation Item and Navigation Bar
- Navigation Item
- Child VC가 Top VC가 될때마다 Navigation Item도 업데이트 된다.
- Root VC만 자동으로 Navigation Item이 있다. 나머지는 추가해줘야 한다.
- Navigation Bar
- 코드로 구현시 ViewDidLoad에서 한다.
- '타이틀 설정' 할 수 있는 3가지 방법
- Storyboard에서 Navigation Item을 추가하고 Title 변경
- View Controller의 attribute inspector에서 자체 title을 변경
- 코드에서는 Navigation Item을 추가하지 않아도 속성에 바로 접근하면 자동으로 생성
override func viewDidLoad() {
super.viewDidLoad()
navigationItem.title = "titleName"
title = "titleName"
}
- 바 버튼 추가
- 코드로 작성시, UIBarButtonItem로 바인딩 해야한다
let sw = UISwitch()
let switchItem = UIBarButtonItem(customview: sw)
navigationItem.setRightBarButtonItems([switchItem, btn1, btn2 ...], animated: true)
- Back 버튼
- Back 버튼의 Title은 이전 VC의 attribute inspector에서 해줘야한다.
- 코드로 작성시에도 이전 VC에서 작성해줘야한다
override func viewDidLoad() {
super.viewDidLoad()
navigationItem.backBarButtonItem?.title = "BackButtonTitle"
}
Customizing Navigation Controller
- 네비게이션 바, 툴바 표시 설정
- 네비게이션 컨트롤러 속성
- Large Title Mode 제어
- 그림자 이미지 추가
- Back 버튼 이미지 변경
- Large Title 텍스트 속성 설정
- Toolbar
- Toolbar Items
- Bar Button Item으로 추가한다. 왼쪽 부터 배치된다.
- 코드로 작성시,
let item1 = UIBarButtonItem(barButtonSystemItem: .add, target: nil, action: nil)
setToolbarItems([item1,item2 ...], animatde: true)
- 툴바에서 바 버튼 배치
- Flexible Space 활용해서 버튼 배치 바꿀 수 있다.
- Toolbar 토글 기능 구현
let hidden = navigationController?.isToolBarHidden ?? false
navigationController.setToolbarHidden(!hidden, animated: true)
Tab Bar Controller
-
탭바 컨트롤러 구조
- Child View를 배열로 관리. 최대 5개. 그 이상은 More Navigation Controller 사용.
-
Tab Bar Item
-
탭 편집
- storyboard에서 Drage&Drop으로 수정할 수 있다.
-
Regular Tab Bar와 Compact Tab Bar
- Regular Tab Bar: image가 위, title 아래 배치.(화면이 세로일때)
- Compact Tab Bar: image가 왼쪽, title이 오른쪽 배치.(화면을 가로로 돌렸을떄)
-
More Item, More Navigation Controller
-
Tab Bar Customization Sheet
-
편집 가능한 탭 지정
-
탭 선택 제어
-
탭 선택 이벤트 처리
-
Navigation Controller와 Tab Bar Controller를 같이 사용할 경우.
- Child를 Navigation Controller로 임베드하는 방식으로 구현.
- Navigation Controller에 Tab Bar Controller를 임베드하는 방식은 잘못된 방법.