[iOS] 화면 전환 방식 (Present, NavigationController + Source, NavigationController + Segue)

2024. 3. 24. 19:05·Apple/iOS
728x90
반응형

 

안녕하세요! 피피아노입니다 🎵

 

이번 포스팅에서는 iOS 개발을 할 때 알고 있어야 하는 것 중 하나인 화면 전환 방식에 대해서 정리를 해보려고 합니다. 

 

그럼 바로 시작하겠습니다. 

 

iOS 개발에서 대표적인 화면 전환 방식에는 present 방식, 네비게이션 컨트롤러 + 소스(push), 그리고 네비게이션 컨트롤러 + Segue가 있습니다.

 

각 방식에 대해서 좀 더 자세히 알아보겠습니다.

 

Present 방식

present 방식은 현재 뷰 컨트롤러에서 새로운 뷰 컨트롤러를 모달로 표시하는 방식입니다. 이 방식은 주로 일시적인 정보나 작업을 사용자에게 제공할 때 사용됩니다.

 

UIViewController에 정의된 present메소드를 사용합니다.

 

공식문서를 한번 살펴보겠습니다.

 

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

 

present(_:animated:completion:) | Apple Developer Documentation

Presents a view controller modally.

developer.apple.com

 

 

공식 문서에는 이렇게 나와 있는데 내용을 살펴보면 

뷰 컨트롤러를 모달 방식으로 보여준다고 나와 있고 

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)하는 방식입니다. 이 방식은 주로 계층적인 데이터 구조를 탐색할 때 사용됩니다.

사용 방법

  1. 네비게이션 컨트롤러를 설정합니다.
  2. 새로운 뷰 컨트롤러를 생성합니다.
  3. pushViewController 메서드를 호출하여 새로운 뷰 컨트롤러를 네비게이션 스택에 추가합니다.
let newViewController = NewViewController()
self.navigationController?.pushViewController(newViewController, animated: true)

 

네비게이션 컨트롤러 + 소스(push)의 장단점

장점

  • 네비게이션 스택을 통해 이전 화면으로 쉽게 돌아갈 수 있습니다.
  • 계층적인 데이터 구조 탐색에 적합합니다.
  • 네비게이션 바를 통해 일관된 사용자 경험을 제공합니다.

단점

  • 네비게이션 컨트롤러가 필요합니다.
  • 모달 프레젠테이션에 비해 설정이 다소 복잡할 수 있습니다.

네비게이션 컨트롤러 + Segue

네비게이션 컨트롤러 + Segue 방식은 스토리보드를 사용하여 화면 전환을 설정하는 방법입니다. 이 방식은 인터페이스 빌더에서 드래그 앤 드롭으로 쉽게 설정할 수 있습니다.

 

사용 방법

  1. 스토리보드에서 네비게이션 컨트롤러를 설정합니다.
  2. 뷰 컨트롤러 간의 Segue를 생성합니다.
  3. Segue의 식별자를 설정하고, 코드에서 performSegue 메서드를 호출하여 화면 전환을 수행합니다.
// 스토리보드에서 Segue의 식별자를 "showDetail"로 설정
self.performSegue(withIdentifier: "showDetail", sender: self)

 

네비게이션 컨트롤러 + Segue 장단점

장점

  • 인터페이스 빌더에서 시각적으로 화면 전환을 설정할 수 있습니다.
  • Segue를 통해 화면 전환 시 데이터를 쉽게 전달할 수 있습니다.
  • 네비게이션 컨트롤러와 결합하여 일관된 사용자 경험을 제공합니다.

단점

  • 인터페이스 빌더에 의존하게 되므로 코드 기반 설정보다 유연성이 떨어질 수 있습니다.
  • 네비게이션 흐름이 복잡해질 경우 관리가 어려울 수 있습니다.

 

 

 

오늘은 여기까지 :)


감사합니다.

잘못된 내용이 있거나 더 좋은 내용 피드백은 언제나 환영합니다!

궁금하신 부분은 댓글로 질문 부탁드립니다!

728x90
반응형

'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
'Apple/iOS' 카테고리의 다른 글
  • [iOS] Core Data는 뭘까?
  • [iOS] Open API 연결하는 방법
  • [iOS] AutoLayout 쉽게 이해하기
  • [iOS] Tab Bar Controller
P_Piano
P_Piano
Apple 생태계 개발자가 되기 위한 학습과 경험의 기록
    반응형
    250x250
  • P_Piano
    피피아노의 개발 일지
    P_Piano
  • 전체
    오늘
    어제
    • 분류 전체보기 (206)
      • Apple (124)
        • iOS (22)
        • visionOS (4)
        • Swift (67)
        • UIKit (2)
        • SwiftUI (23)
        • RxSwift (2)
        • Xcode (4)
      • C언어 (5)
      • C++ (8)
      • Dart (1)
      • Python (3)
      • JavaScript (17)
      • Git (1)
      • CS (39)
        • 디자인 패턴 (6)
        • 네트워크 (20)
        • 운영체제 (8)
        • Database (5)
        • 자료구조 (0)
      • IT 지식 (2)
      • IT 뉴스 (4)
      • 출처 표기 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    변수
    오블완
    ios
    티스토리챌린지
    옵셔널
    디자인패턴
    Vision Pro
    프로그래머스
    연산자
    combine
    스위프트
    클래스
    네트워크
    프로퍼티 래퍼
    visionOS
    배열
    UIKit
    비동기
    Initializers
    Xcode
    이니셜라이저
    Optional
    프로세스
    SWIFT
    제어문
    운영체제
    swiftUI
    코딩테스트
    함수
    자바스크립트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
P_Piano
[iOS] 화면 전환 방식 (Present, NavigationController + Source, NavigationController + Segue)
상단으로

티스토리툴바