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

2024. 3. 24. 19:05·Apple/iOS
목차
  1. Present 방식
  2. 사용 방법
  3. present 방식의 장단점
  4. 장점
  5. 단점
  6. 네비게이션 컨트롤러 + 소스(push)
  7. 사용 방법
  8. 네비게이션 컨트롤러 + 소스(push)의 장단점
  9. 장점
  10. 단점
  11. 네비게이션 컨트롤러 + Segue
  12. 사용 방법
  13. 네비게이션 컨트롤러 + Segue 장단점
  14. 장점
  15. 단점
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
  1. Present 방식
  2. 사용 방법
  3. present 방식의 장단점
  4. 장점
  5. 단점
  6. 네비게이션 컨트롤러 + 소스(push)
  7. 사용 방법
  8. 네비게이션 컨트롤러 + 소스(push)의 장단점
  9. 장점
  10. 단점
  11. 네비게이션 컨트롤러 + Segue
  12. 사용 방법
  13. 네비게이션 컨트롤러 + Segue 장단점
  14. 장점
  15. 단점
'Apple/iOS' 카테고리의 다른 글
  • [iOS] Core Data는 뭘까?
  • [iOS] Open API 연결하는 방법
  • [iOS] AutoLayout 쉽게 이해하기
  • [iOS] Tab Bar Controller
P_Piano
P_Piano
Apple 생태계 개발자가 되기 위한 학습과 경험의 기록

P_Piano님의
글이 좋았다면 응원을 보내주세요!

응원하기
응원은 창작의 힘

이 글이 도움이 됐다면, 응원 댓글을 써보세요. 블로거에게 지급되는 응원금은 새로운 창작의 큰 힘이 됩니다.

카카오 계정으로 누구나

응원 댓글은 만 14세 이상 카카오계정 이용자라면 누구나 편하게 작성, 결제할 수 있습니다.

응원 댓글 강조

글 본문, 댓글 목록 등을 통해 응원한 팬과 응원 댓글, 응원금을 강조해 보여줍니다.

쉬운 결제

응원금은 앱에서는 인앱결제, 웹에서는 카카오페이 및 신용카드로 결제할 수 있습니다.

응원 수익은 창작자에게 큰 힘이 됩니다.
응원 금액
응원 댓글
  • 창작 활동에 대한 감사와 격려의 의미로 창작자를 응원합니다.
  • '응원하기'는 자발적 결제이므로 청약철회(환불) 불가능합니다.
  • '응원하기'는 만 14세 이상 인증 사용자만 이용할 수 있습니다. 만 19세 미만 미성년 회원의 경우, 법정대리인이 응원하기 결제 이용에 동의하지 않으면 미성년자 본인 또는 법정대리인이 그 결제 내용을 취소할 수 있습니다.
  • '응원하기' 이용을 위한 자세한 내용은 티스토리 이용약관 및 카카오 유료서비스 이용약관을 따릅니다.
(주) 카카오 대표이사 정신아
사업자 등록 번호 120-81-47521
통신판매업신고번호 제2015-제주아라-0032호
주소 제주특별자치도 제주시 첨단로 242(영평동)
호스팅사업자 (주)카카오
고객센터 1577-3754
이메일 help.notice@kakaocorp.com
    반응형
    250x250
  • P_Piano
    피피아노의 개발 일지
    P_Piano
  • 전체
    오늘
    어제
    • 분류 전체보기 (201)
      • Apple (119)
        • iOS (22)
        • visionOS (4)
        • Swift (65)
        • UIKit (2)
        • SwiftUI (20)
        • 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
    코딩테스트
    스위프트
    Xcode
    운영체제
    UIKit
    티스토리챌린지
    오블완
    함수
    비동기
    클래스
    네트워크
    swiftUI
    SWIFT
    디자인패턴
    Initializers
    프로세스
    이니셜라이저
    Vision Pro
    배열
    연산자
    메서드
    visionOS
    옵셔널
    Optional
    combine
  • 최근 댓글

  • 최근 글

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

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.