라티의 작은 일기장

[18일차] [LED 전광판 앱] 앱 화면 전환 개념 본문

Swift

[18일차] [LED 전광판 앱] 앱 화면 전환 개념

코드라티 2023. 3. 9. 23:45

오늘은 중요한 시험 전날이지만... 어김없이 Swift 공부는 시작된다..!

그래서 오늘 공부할 것은 iOS 앱 개발에서 필수적일 수 밖에 없는 개념이지 않을까 싶다.

세상에 잘 만들어졌다고 평가받는 어느 앱이 딱 하나의 화면으로만 구성돼있던가? (물론 몇몇 특수 앱들 제외)

아이폰에서 유저 친화적인 제스처를 통해 화면을 넘기고, 다시 불러오고, 앱의 주요 기능에 속해 있는 많은 세부 기능들을 다른 화면에 모아두고, 메인 화면에서는 그것을 볼 수 없게 하여 앱에서도 미니멀리즘을 표현할 수단으로서 활용하는 그것은 바로~~?

화면 전환!

그렇다! 화면(View Controller) 간 전환이다! 이번에 우리가 구현할 전광판 앱은 둘 이상의 화면을 가진 앱이기 때문에, 화면 전환과 그 방법에 대해 공부해볼 필요가 있다.

 

우선 화면 전환 방법은 소스코드를 통해 전환하는 방식이 있고, Storyboard에서 제공하는 기능을 통해 전환하는 방식이 있다.

조금 더 자세하게 알아보자면, 전체적으로 다음 4가지의 방법이 있다.

  • View Controller의 View를 다른 View로 바꿔치는 방법
  • View Controller에서 다른 ViewController를 호출하여 전환하는 방법
  • Navigation Controller를 사용
  • 화면 전환용 객체 세그웨이(Segueway)를 사용

단, 이 네가지 방법 중 첫 번째 방법은 메모리 누수(Memory Leak)의 위험이 있기 때문에 잘 쓰지 않는다고 한다.

그래서 첫 번째 방법은 건너뛰고 나머지에 대해 자세히 알아보자.

 

1. View Controller에서 다른 View Controller를 호출하여 전환하는 방법

일단 이 방식은 현재 VC에서 다른 VC를 호출해서 보여주는 방식이기 때문에 Present 방식이라고도 한다.

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

파라미터를 살펴보면 이동할 VC, 화면을 전환할 때 애니메이션 표시 여부를 결정하는 flag, 화면 전환이 완료되는 시점에 호출되는 클로저 함수 completion이 있다. (비동기)

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

화면 전환이 일어나고난 뒤, Back 버튼 등을 활용하여 이전 화면으로 돌아갈 때 사용되는 메소드이다.

특정한 VC로 전환하는게 아니라 단순히 이전 VC로 돌아가는 것이기에 해당 파라미터만 존재하지 않고, 나머지는 present 메소드와 동일하다.

 

2. Navigation Controller를 사용

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

Navigation Controller는 바로 이전 포스팅에서 다루었는데, 특징으로는 LIFO(Last-In-First-Out) 방식의 계층적 구조를 갖고 있어 내부가 Stack으로 구현된다는 것이었다. 그리고 그것을 Navigation Stack이라고 한다.

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

Navigation "Stack" 이니까 VC들을 호출하고 반환하는 메소드도 스택의 연산인 push, pop에서 따온듯 하다.

이 둘도 1번에서 다루었던 두 메시지와 동작 원리는 같기 때문에, 파라미터도 거의 비슷하다.

 

3. 화면 전환용 객체 세그웨이(Segueway)를 사용

세그웨이를 사용하는 방식에는 Action Segueway, Manual Segueway의 두 가지 방식이 있다.

그럼 일단 세그웨이는 뭐냐?! 라고 궁금해하시는 분들이 있을 것 같은데, 화면 전환 관계에 있는 두 VC 사이에 존재하여 두 VC의 연결 정보를 갖고 있는 객체이다. 일종의 미들웨어(Middleware) 또는 API(Application Programming Interface)라 할 수 있겠다.

특징으로는 스토리보드에서 직접 출발지와 목적지를 지정한다는 것. 코드 작성이 필요 없기 때문에 난이도가 쉽다고 할 수 있다.

 

세그웨이의 종류에는 Action Segueway, Manual Segueway 두 가지 방식이 있다.

출발하는 지점이 VC 자신인 경우를 Manual Segueway, 버튼, 셀 등의 UI 컴포넌트인 경우는 Action Segueway라고 얘기한다.

 

Action Segueway의 종류는 다음과 같다.

  • Show
  • Show Detail
  • Present Modally
  • Present As Popover
  • Custom

 

 

 

패스트캠퍼스 바로가기 : http://bit.ly/3Y34pE0

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

> 본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.