카테고리 없음

[UINavigationController]

s.usu 2021. 9. 24. 19:04

공식문서 바로가기

 

ContentViewController vs ContainerViewController

ContentViewController

화면을 구성하는 view를 직접 규현하고 이벤트를 처리하는 view controller

 

ContainerViewController

하나 이상의 Child View Controller를 가지고 Child View Controller를 관리하고 화면 전환을 담당

계층구조로 구성된 content를 순차적으로 보여준다.

대표적으로 Navigation Controller와 TabBar Controller가 있다.

출처 https://developer.apple.com/documentation/uikit/uinavigationcontroller

 

화면전환

화면전환 방법

  • View Controller의 view 위에 다른 view를 가져와 바꿔치기 (메모리 누수가 발생할 수 있기 때문에 지양한다.)
  • View Controller에서 다른 View Controller를 호출하여 전환하기
  • Navigation Controller를 사용하여 화면 전환하기
  • 화면 전환용 객체 Segueway를 사용하여 화면 전환하기

 

(1) View Controller에서 다른 View Controller를 호출하여 전환하기

present

present method로 다른 View Controller를 호출하여 전환할 수 있다.

출처 https://developer.apple.com/documentation/uikit/uiviewcontroller/1621380-present

 

dismiss

dismiss method로 호출한 View Controller를 종료하고 이전 View Controller로 돌아갈 수 있다.

출처 https://developer.apple.com/documentation/uikit/uiviewcontroller/1621505-dismiss

 

(2) Navigation Controller를 사용하여 화면 전환하기

pushViewController

pushViewController method로 다른 View Controller를 호출하여 전환할 수 있다.

출처 https://developer.apple.com/documentation/uikit/uinavigationcontroller/1621887-pushviewcontroller

 

popViewController

popViewController method로 호출한 View Controller를 종료하고 이전 View Controller로 돌아갈 수 있다.

출처 https://developer.apple.com/documentation/uikit/uinavigationcontroller/1621886-popviewcontroller

 

(3) 화면 전환용 객체 Segueway를 사용하여 화면 전환하기

Action Segueway

전환점이 button 같은 객체인 경우

 

Manual Segueway

전환점이 View Controller인 경우 (코드로 전환)

 

Action Segueway 종류

  • Show : 가장 대표적으로 쓰이는 Action Segue
  • Show Detail : iPad에서만 쓰이는 Action Segue
  • Present Modally : View Controller를 Modal로 보여주는 Action Segue
  • Present As Popover : iPad에서만 쓰이는 Action Segue
  • Custom

출처 https://jcsoohwancho.github.io/2019-07-28-Segue-%ED%8C%8C%ED%97%A4%EC%B9%98%EA%B8%B0/

 

화면간 데이터 전달

현재 View Controller에서 다음 View Controller로 data 전달

 

현재 View Controller에서 이전 View Controller로 data 전달

 

[참고]