[iOS] ViewController Switching

Seonhu Kim·2023년 3월 29일
0

iOS

목록 보기
5/16
post-thumbnail

iOS에서는 ViewController의 다양한 전환 방법이 있다. 대표적으로 세 가지가 있는데 해당 방법을 간략히 정리해둔다.

  1. ViewController에서 다른 ViewController를 호출해서 화면 전환하는 방법 (직접 호출하는 방식이어서 Presentation방식이라고 함) → 제한적이며, Alert 또는 화면을 들어갔다가 다시 나오는 경우
  2. 다중의 화면을 제어할 경우 NavigationController를 사용하여 화면을 전환 → 주로 사용함
  3. 화면 전환용 객체 세그웨이(Segueway)를 사용해서 화면 전환하는 방법이 있음 (코드로 안짜고 싶을때 근데 Manual 방식은 또 짜야하긴함)

ViewController를 직접 호출하는 Presentation 방식

  • 현재의 ViewController에서 이동할 대상 ViewController를 직접 호출해서 화면을 표시하는 방식

  • 직접 표시한다는 의미에서 프리젠테이션 방식이라고함 → present(viewControllerToPresent: animated: completion: )

  • present로 화면을 전환했다면 이전 화면으로 복귀할 때는 다음 메서드를 사용 → dismiss(animated: completion:) 새로 객체를 생성하는 것이 아닌 이전 화면(객체)로 돌아감
  • 첫번째 ViewController에게 부탁하여 화면을 전환해야 하기 때문에 다음처럼 전개 → self.presentingViewController.dismiss(animated:completion:)

  • Xcode - Editor - Embed In - Navigation Controller 추가
  • StoryBoard Library - Bar Button Item 추가
  • 새로운 ViewController로 전환하는 메서드 → pushViewController() 작성

  • 기존 ViewController 화면으로 전환하는 메서드 → popViewController() 작성

세그웨이(Segueway)를 이용한 화면 전환

  • 세그웨이는 화면 전환과 ViewController의 연결을 관리하는 객체를 가리키는 단어 (Control + View 혹은 Button → 연결하려는 ViewController 드래그)
  • 세그웨이는 화면과 화면의 연결을 위한 코드 없이도 스토리보드상에서 화면 전환 기능을 직접 구현할 수 있는 장점이 있음
  • 세그웨이는 출발지와 목적지를 가지고 있으며 한쪽 방향으로 통행할 수 있어서 One-Way-Bridge라고 함

  • 액션 세그 (자동)

    • 트리거와 세그웨이가 직접 연결된 것을 의미함. 주로 버튼이나 테이블 셀 등 터치 및 클릭 이벤트를 발생시킬 수 있는 컨트롤이나 제스처 등 세그웨이를 실행할 수 있는 요소
    • 실행을 소스 코드에서 메서드 호출에 의존하지 않고 스토리보드에서 이벤트가 발생하면 자동으로 세그웨이가 실행되도록 트리거를 구성하기 때문에 연결성 코드가 필요 없음
  • 메뉴얼 세그 (반자동)

    • 트리거 없이 수동으로 실행해야 하므로 소스코드에서 세그웨이를 실행할 메서드를 호출해야함
    • performSegue(withIdentifier : 세그웨이 식별자, sender: 세그웨이 실행 객체)
    • 두 개의 인자값은 실행할 세그웨이에 대한 식별자와 세그웨이를 실행할 객체 정보

unwind (화면 복귀)

  • 새로운 화면을 해제하고 본래의 화면으로 돌아가는 것을 의미함 (메서드 정의 - View Controller- button 혹은 View - Exit에 연결)
  • 스토리보드에 있는 Unwind Segue를 사용
  • 생성되는 메서드는 원하는 이름으로 작성해도 상관없지만, 앱 전역에서 사용할 수 있도록 겹치지 않는 이름으로 만들어야함

메뉴얼 세그

profile
iOS Developer.

0개의 댓글