Segue로 화면전환 하기

고라니·2023년 7월 31일
0

TIL

목록 보기
17/67

Segue는 iOS에서 두 개의 뷰 컨트롤러 사이의 전환을 관리한다. 모달이나 네비게이션 같은 화면 전환 방법 중 하나라고 생각하면 안된다.

Segue?

Segue는 스토리보드 상에서 뷰 컨트롤러 간의 연결을 시각적으로 지원한다. 이 연결을 통해 사용자 인터페이스의 흐름을 쉽게 이해하고 설계 가능하다, 즉 코드가 아닌 스토리보드를 통해 화면 전환을 관리하는 방식이라고 볼 수 있다.

Segue는 UIKit에서 UIStoryboardSegue 클래스로 정의되고 사용되는 것을 알 수 있다.

Segue의 기능

  • 화면전환: 기본적으로 화면전환 역할을 한다. 사용자의 특정 액션이 발생하면 Segue는 한 뷰 컨트롤러에서 다른 뷰 컨트롤러로 이동하는 데 사용된다.

  • 데이터 전달: 뷰 컨트롤러 간의 데이터를 전달한다. 'Prepare(for:sender:)' 메서드를 사용하여 다음 뷰 컨트롤러에 전달할 수 있다.

Segue의 작동

sugue 생성

Segue를 사용하기 위해 먼저 스토리보드에서 Segue를 정의해야 한다.

NextButton에서 다음 뷰로 드래그 한다, 그런 다음 Segue의 유형을 선택하여 생성한다.

Segue의 유형 종류

  • Show: Navigation Controller가 스택에 새 뷰 컨트롤러를 푸시한다. (네비게이션 방식으로 전환)
  • Show Detail: Split view controller에 세부 정보 뷰 컨트롤러를 교체 (한 화면에서 두 개의 뷰 컨트롤러를 동시에 보여줄 수 잇음)
  • Presnt Modally: 뷰 컨트롤러를 모달로 띄운다.
  • Popover Presntation: 팝오버로 뷰 컨트롤러를 표시한다. (작은 정보 조각 표시)

Segue 실행

Segue를 싱행하려면 일반적으로 버튼같은 사용자 액션에 반응하여 코드없이 화면전환 구현이 가능하지만, 필요에 따라 'performSegue(withIdentifier:sender:)' 메소드를 호출하여 프로그래밍 방식으로도 실행할 수 있다.

코코아터치 클래스로 새로운 ViewController파일을 만들면 이렇게 주석으로 코드가 작성되어 있는데 바로 이게 performSegue메서드에 대한 코드였다.

Segue 준비

'prepare(for:sneder:)' 메소드를 통해 사전 Segue가 실행되기 전에 사전 준비가 가능하다 보통 다음 뷰로 데이터를 전달하는 용도로 사용한다. 이 메소드는 Segue가 실행되기 전에 호출되므로, 이동할 목적 뷰 컨트롤러의 속성을 설정하여 데이터를 전달할 수 있다.

주의! 'prepare(for:sneder:)'메서드를 통해 데이터를 전달 할 때 주의할 점이 있다.
예) 'prepare(for:sneder:)'메서드를 통해 다음 뷰의 라벨 텍스트를 변경하려는 경우 직접 해당 라벨의 텍스트 값을 설정하면 prepare메서드의 실행 시점에서는 다음 뷰의 UI가 아직 메모리에 올라가있지 않기 때문에 오류가 발생한다. 그렇기 때문에 UI를 위한 데이터 전달의 경우 보통 직접 설정하지 않고 다음 뷰의 변수에 데이터를 저장하여 다음 뷰의 viewWillAprear 같이 UI를 로드하는 과정에서 적용하게 한다.

마치면서

Segue를 사용하면 스토리보드에서 간편하고 시각적인 방법으로 화면전환을 할 수 있다. 그리고 필요에 따라 프로그래밍 방식으로도 실행가능하며 데이터 전달을 위한 메소드까지 구현되어 있다.
만약 스토리보드를 사용하는 프로젝트라면 Segue를 이용하여 인터페이스 플로우를 효과적으로 관리하자

profile
🍎 무럭무럭

0개의 댓글