Container View Controller

  1. 하나 이상의 child view controller를 가지고 있다.
  2. 하나 이상의 child view controller를 관리하고, 레이아웃과 화면 전환을 담당한다.
  3. 화면 구성과 이벤트 관리는 child view controller에서 한다.
  4. Navigation view controller, TabBar controller가 대표적인 예

계층구조로 구성된 content를 순차적으로 보여주는 container view controller
(ex) 아이폰 설정메뉴

Navigation View controller에서 각 메뉴화면이 스택처럼 쌓인 형태로 계층구조를 표현하는 것으로, 하위 메뉴로 들어갈 수록, 스택 안으로 각 메뉴화면은 순차 push되어 쌓이는 것임 -> back 버튼을 누르면 해당 메뉴화면은 pop되는 것임

  1. topItem prompt: 메인 타이틀의 윗첨자
  2. Navigation Bar Prompt: 메인 타이틀 영역
  3. backItem Title: 뒤로가기 영역
  4. topItem rightBarButtonItem: 우상단 영역

화면전환

소스코드를 통해서, Storyboard를 통해서 화면전환되는 것은 사실 다음과 같이 상세하게 구분해볼 수 있다.
1. View Controller의 View 위에 다른 View를 가져와서 화면을 바꿔놓는 것 -> 지양해야 한다!(leak of memory)
2. View Controller에서 다른 View Controller를 호출하여 화면을 바꿔놓는 것
3. Navigation Controller를 사용하여 화면을 바꿔놓는 것
4. 화면전환용 객체 세그웨이(Segueway)를 사용하여 화면을 바꿔놓는 것

View Controller에서 다른 View Controller를 호출하여 화면 전환하기

현재 View Controller를 인자로 받아, 화면전환 시 애니메니션을 사용할지 여부를 flag에 값을 주고 화면을 전환하는 방법

func present(_ viewControllerToPresent: UIViewController, animated flag: Bool, completion: (() -> Void)? = nil)

func dismiss(animated flag: Bool, completion: (() -> Void)? = nil)

Navigation stack의 성질을 활용하는 방법

func pushViewController(_ viewController: UIViewController, animated: Bool)

func popViewController(animated: Bool) -> UIViewController?

Segueway를 사용하여 화면 전환하기

  1. Action Segueway: 출발점이 버튼, 토글 등인 경우
  • Show: Navigation Stack 방식과 거의 동일
  • Show Detail: 아이폰일 경우 Navigation Stack, 아이패드일 경우 Slave-Master 방식으로 보여짐 (ex) 메시지 앱
  • Present Modally: 프레젠테이션 방식
  • Present As Popover: 아이패드에서만 사용되며, 팝업창 방식
  • Custom
  1. Manual Sequeway: 출발점이 ViewController 자체인 경우
profile
전직 시스템엔지니어, 현직 데이터엔지니어, 하지만 하고 싶은건 iOS 개발

0개의 댓글