iOS - UIKit

UIKIT. UINavigationController

clamp 2022. 2. 11. 15:33

일단 네비게이션 컨트롤러를 스토리보드에 추가해준다.

storyboard entry point를 네비게이션 컨트롤러로 지정해준 후 네비게이션 컨트롤러를 메인뷰와 이어준 뒤 root view controller로 지정해주면 메인 view가 rootview가 된다.

 

 

뷰는 스택 자료구조처럼 움직이게된다.

First in Lsat out으로 먼저 들어간 계층이 마지막에 나오게 된다

이를 스택 자료구조에선 스택에 넣는다 -> Push, 나오게된다 -> POP

 

Sugue방식 -> 스토리보드에서 버튼을 우클릭 드래그앤 드롭을 view로 하여 쉽게 구현 가능하며, 이동된 뷰는 스택에 PUSH된다.

code방식 

공통: @IBAction을 만들어 컴포넌트가 작동됐을 경우의 Action함수를 만들어 주어한다.

 

Push(root -> 다른뷰) -> Action함수 내부에서 작성

1.  guard let 문으로 옵셔널 바인딩을 해준다.

guard let 상수명 = self.storyboard?.instantiateViewController(withIdentifier: "Storyboard ID") as CodePushViewControllerelse { return }

 

옵셔널 바인딩을 해주는 이유는  뷰가 있을지 없을지 모르는 옵셔널값이기 때문에  옵셔널 바인딩을 해준 후 사용.

상수명은 옵셔널 바인딩을 받을 상수의 이름.

Storyboardd은  실제뷰에 할당해준 클래스의 IdentifyStoryboard ID를 적는다. 뷰마다 클래스는 하나씩 가지고 있다.

스토리보드에서 클래스명을 지정해줄 수 있다.

 

Storyboard ID와 클래스 지정법

클래스명에 해당하는 뷰컨트롤러 클릭 

1. CustomClass에서 Class를 선택해 준다.

2. Identify를 입력해준다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2. 바인딩 받은 뷰를  Push 한다.

        self.navigationController?.pushViewController(바인딩받은상수, animated: Bool)

실제로 화면 전환이 일어나는 순간은 이때.

 

POP(Push된 뷰를 제거한다)

        self.navigationController?.popViewController(animated: Bool)

 

pop은 어떠한 뷰를 불러올 필요 없이 제거?하기만 하면 된다. 그러므로 바인딩이 필요하지 않다.

 

 

       self.navigationController?.popToRootViewController(animated: Bool)

 

해당 메소드는 바로 Root뷰까지 POP하는 메소드.

 

 

해당 UINavigationController는 Present방식은 설명하지 않았습니다.