본문 바로가기
iOS/iOS

[iOS] iOS의 화면 전환 - Navigation Controller를 사용한 화면 전환 (2/3)

by 원만사 2021. 12. 3.
반응형

화면을 전환하는 4가지 방법

 iOS의 화면 전환 방법에는 총 4가지가 있다.

  1. View Controller의 View 위에 다른 View로 바꿔치기
  2. View Controller에서 다른 View Controller를 호출하여 전환하기 (present) - 링크
  3. Navigation Controller를 사용하여 화면 전환하기 (push) 
  4. 화면 전환용 객체 Segueway를 사용하기 - 링크

 다음으로 Navigation Controller를 사용하여 화면을 전환하는 방법에 대해서 알아보자.

 

Navigation Controller를 사용한 화면 전환(push)

 Navigation Controller를 사용하여 화면이 전환되는 방식이다. Navigation Stack을 사용하여 자식 View Controller를 관리한다. 스택의 첫 번째는 Root View Controller를 의미하고 마지막 View Controller는 현재 보여지는 화면을 의미한다.

 

화면 호출

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

 

[Parameters]

  • viewController : 새로 이동할 화면의 ViewController 인스턴스
  • animated : 화면 전환 시 애니메이션 효과 사용 여부

 

이전 화면으로 돌아가기

func popViewController(animated: Bool) -> UIViewController?

 

[Parameters]

  • animated : 화면 전환 시 애니메이션 효과 사용 여부

[Return Value]

 스택에서 pop된 view controller

 

예제

 위의 사진에서 왼쪽 화면의 버튼을 클릭해서 오른쪽 화면을 호출하자. 먼저 'Push' 화면의 Storyboard ID를 지정해야 한다. 'Push' 화면을 클릭하고 코드 인스펙터에서 Storyboard ID를 지정하자.

 Modal 방식과 마찬가지로 Storyboard ID를 이용해서 해당 화면의 View Controller를 인스턴스화 시키고 pushViewController 함수를 사용하여 해당 화면을 불러온다. 코드는 다음과 같다.

 

@IBAction func clickPushButton(_ sender: UIButton) {
        guard let viewController =
                self.storyboard?.instantiateViewController(withIdentifier: "pushViewController")
        else { return }
        
        self.navigationController?.pushViewController(viewController, animated: true)
    }

 

 다음으로 'Push' 화면에서 Back 버튼을 클릭하여 이전 화면으로 돌아가는 코드를 작성해보자. 다음과 같이 popViewController 함수를 사용하면 된다.

 

@IBAction func clickBackButton(_ sender: UIButton) {
        self.navigationController?.popViewController(animated: true)
    }

 

 최종 동작 화면은 다음과 같다.

 

참고

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

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

 

반응형

댓글