[IOS] View Controller

East Silver·2021년 10월 5일
0

1. View Controller

  • 뷰 컨트롤러 역할 3가지
  • Content View Controller와 Container View Controller
  • 뷰 컨트롤러 생성
let vc = UIVIewController()
  • 뷰 컨트롤러와 Scene 연결
  • Nib

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 지정
  • 뷰 컨트롤러 계층 관리
  • 계층 이동 이벤트 처리
  • 네비게이션 컨트롤러 구조

    • Root view를 가진다.
    • 아래에는 Tool Bar 위에는 Navigation Bar.
  • 네비게이션 스택 관리

    • 스택 가장 아래에 Root VC가 있고 가장 위에 있는 것을 Top VC라고 한다.
    • pop하면 스택에서 사라지고 Top VC가 바뀐다.
  • Push & Pop Transition

  • Large Title Mode

    • Large Title/ Large Title with Search Bar / Normal Title
  • "Relationship Segue" 에서 view controllers로 연결

  • Navigation Bar와 Navigation Item

    • Navigation Bar내의 버튼은 UIBarButtonItem 인스터스로 추가한다.
    • Navigation Item에서 title, LeftBarButtonItems, RightBarButtonItems 등을 관리한다.
  • 코드로 생성(좀 더 공부 필요)

    • 이전으로 돌아가는 기능과 back 버튼은 Navigation Controller가 담당하므로 직접 구현 할 필요 없음
    • Navigation Controller와 Child view Controller와 인스터스 생성은 코드로 직접 구현해야한다. 새로운 child 표시하는 코드도 직접 구현해야한다.
  • 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.rightBarButtonItems = [switchItem, btn1, btn2 ...]
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
    • View 하단에 위치한다.
  • 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

    • title, image, badgeValue
  • 탭 편집

    • 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를 임베드하는 방식은 잘못된 방법.
profile
IOS programmer가 되고 싶다

0개의 댓글

관련 채용 정보