본문 바로가기
STUDY/iOS

[swift] 화면 전환 | push, present

by 23g 2025. 4. 19.

화면 전환 방법

push랑 present는 다른 방식으로 화면을 전환하는 두 가지 방식임
사용하는 상황, 애니메이션, 뒷화면 유지 방식이 다름

✅ push 방식 (navigationController 기반)

  • 스택 구조로 화면 쌓음 (ex: A → B → C → back 하면 C → B → A)
  • 내비게이션 바가 기본 제공됨
  • 뒤로 가기(back)가 자동으로 생김
  • UINavigationController 안에서만 사용 가능
let detailVC = DetailViewController()
navigationController?.pushViewController(detailVC, animated: true)

사용 예:

  • 목록에서 상세 보기
  • 설정 → 하위 설정 메뉴
  • 탭 내에서 단계적으로 들어가는 구조

✅ present 방식 (모달)

  • 새로운 화면을 현재 화면 위에 덮어쓰기
  • 내비게이션 바 없음 (필요하면 직접 넣어야 함)
  • 보통 닫기 버튼 따로 필요
let profileVC = ProfileViewController()
present(profileVC, animated: true, completion: nil)

사용 예:

  • 로그인 화면
  • 팝업, 설정, 공유 시트
  • 단순히 한 화면만 보여주고 다시 돌아올 때

✅ present vs push 비교 요약

구분 push present
구조 스택(push/pop) 모달(present/dismiss)
뒤로 가기 자동 (내비게이션 바) 수동 (버튼 직접 추가)
내비게이션 필수 (UINavigationController) 없어도 가능
사용 시기 계층적 이동 임시로 띄우는 화면

 

화면 닫기 방법

push/present에 대응되는 화면 닫기 방법으로 pop과 dismiss가 있음
둘은 각각 pushpresent 방식에서 화면을 되돌릴 때 사용함

✅ popViewController() → push의 반대

  • UINavigationController에서 사용
  • 이전 화면으로 뒤로 감
  • 자동으로 스택에서 현재 화면 제거
navigationController?.popViewController(animated: true)

또는 사용자가 네비게이션 바의 Back 버튼 누르면 자동 실행됨

✅ dismiss() → present의 반대

  • 모달 방식으로 띄운 화면을 닫음
  • 이전 화면으로 돌아감
dismiss(animated: true, completion: nil)

→ 모달로 띄운 화면 안에서 직접 호출해야 함

✅ push/pop vs present/dismiss 비교 요약

동작 push pop
화면 띄우기 pushViewController present
화면 닫기 popViewController dismiss
네비게이션 필요 ✅ 필요함 ❌ 없어도 됨
뒤로 가기 버튼 자동 제공 직접 만들어야 함

 

예시 흐름

// A → B → C (push)
navigationController?.pushViewController(CViewController(), animated: true)

// C에서 다시 B로
navigationController?.popViewController(animated: true)


// A → 모달 B
present(BViewController(), animated: true)

// B에서 A로 돌아가기
dismiss(animated: true)

 

최근댓글

최근글

skin by © 2024 ttutta