안녕하세요! 피피아노입니다 🎵
이번 포스팅에서는 iOS 개발을 할 때 알고 있어야 하는 것 중 하나인 화면 전환 방식에 대해서 정리를 해보려고 합니다.
그럼 바로 시작하겠습니다.
iOS 개발에서 대표적인 화면 전환 방식에는 present 방식, 네비게이션 컨트롤러 + 소스(push), 그리고 네비게이션 컨트롤러 + Segue가 있습니다.
각 방식에 대해서 좀 더 자세히 알아보겠습니다.
Present 방식
present 방식은 현재 뷰 컨트롤러에서 새로운 뷰 컨트롤러를 모달로 표시하는 방식입니다. 이 방식은 주로 일시적인 정보나 작업을 사용자에게 제공할 때 사용됩니다.
UIViewController에 정의된 present메소드를 사용합니다.
공식문서를 한번 살펴보겠습니다.
https://developer.apple.com/documentation/uikit/uiviewcontroller/1621380-present
공식 문서에는 이렇게 나와 있는데 내용을 살펴보면
뷰 컨트롤러를 모달 방식으로 보여준다고 나와 있고
func present(
_ viewControllerToPresent: UIViewController,
animated flag: Bool,
completion: (() -> Void)? = nil
)
이런 구조로 사용이 된다고 나와 있습니다.
present 방식을 사용하면 돌아올 때는 혼자서 돌아올 수 없기 때문에
presentingViewController?.dismiss(animated:)
dismiss라는 메소드를 사용해서 되돌아오게 됩니다.
사용 방법
새로운 뷰 컨트롤러 인스턴스를 생성합니다.
present 메서드를 호출하여 새로운 뷰 컨트롤러를 모달로 표시합니다.
let newViewController = NewViewController()
newViewController.modalPresentationStyle = .fullScreen // 전체 화면으로 모달 표시
self.present(newViewController, animated: true, completion: nil)
present 방식의 장단점
장점
- 간단하고 직관적입니다.
- 다양한 모달 프레젠테이션 스타일을 지원합니다.
- 현재 화면의 흐름을 방해하지 않고 일시적인 작업을 처리할 수 있습니다.
단점
- 화면 전환이 독립적이기 때문에 네비게이션 스택을 유지하지 않습니다.
- 복잡한 네비게이션 흐름을 처리하는 데 적합하지 않습니다.
네비게이션 컨트롤러 + 소스(push)
네비게이션 컨트롤러 + 소스(push) 방식은 네비게이션 컨트롤러를 사용하여 뷰 컨트롤러를 네비게이션 스택에 추가(push)하는 방식입니다. 이 방식은 주로 계층적인 데이터 구조를 탐색할 때 사용됩니다.
사용 방법
- 네비게이션 컨트롤러를 설정합니다.
- 새로운 뷰 컨트롤러를 생성합니다.
- pushViewController 메서드를 호출하여 새로운 뷰 컨트롤러를 네비게이션 스택에 추가합니다.
let newViewController = NewViewController()
self.navigationController?.pushViewController(newViewController, animated: true)
네비게이션 컨트롤러 + 소스(push)의 장단점
장점
- 네비게이션 스택을 통해 이전 화면으로 쉽게 돌아갈 수 있습니다.
- 계층적인 데이터 구조 탐색에 적합합니다.
- 네비게이션 바를 통해 일관된 사용자 경험을 제공합니다.
단점
- 네비게이션 컨트롤러가 필요합니다.
- 모달 프레젠테이션에 비해 설정이 다소 복잡할 수 있습니다.
네비게이션 컨트롤러 + Segue
네비게이션 컨트롤러 + Segue 방식은 스토리보드를 사용하여 화면 전환을 설정하는 방법입니다. 이 방식은 인터페이스 빌더에서 드래그 앤 드롭으로 쉽게 설정할 수 있습니다.
사용 방법
- 스토리보드에서 네비게이션 컨트롤러를 설정합니다.
- 뷰 컨트롤러 간의 Segue를 생성합니다.
- Segue의 식별자를 설정하고, 코드에서 performSegue 메서드를 호출하여 화면 전환을 수행합니다.
// 스토리보드에서 Segue의 식별자를 "showDetail"로 설정
self.performSegue(withIdentifier: "showDetail", sender: self)
네비게이션 컨트롤러 + Segue 장단점
장점
- 인터페이스 빌더에서 시각적으로 화면 전환을 설정할 수 있습니다.
- Segue를 통해 화면 전환 시 데이터를 쉽게 전달할 수 있습니다.
- 네비게이션 컨트롤러와 결합하여 일관된 사용자 경험을 제공합니다.
단점
- 인터페이스 빌더에 의존하게 되므로 코드 기반 설정보다 유연성이 떨어질 수 있습니다.
- 네비게이션 흐름이 복잡해질 경우 관리가 어려울 수 있습니다.
오늘은 여기까지 :)
감사합니다.
잘못된 내용이 있거나 더 좋은 내용 피드백은 언제나 환영합니다!
궁금하신 부분은 댓글로 질문 부탁드립니다!
'Apple > iOS' 카테고리의 다른 글
[iOS] Core Data는 뭘까? (0) | 2024.05.24 |
---|---|
[iOS] Open API 연결하는 방법 (0) | 2024.05.19 |
[iOS] AutoLayout 쉽게 이해하기 (0) | 2023.12.30 |
[iOS] Tab Bar Controller (2) | 2023.12.02 |
[iOS] 세그먼트 컨트롤 디자인 (0) | 2023.12.01 |