화면 전환 방법
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가 있음
둘은 각각 push와 present 방식에서 화면을 되돌릴 때 사용함
✅ 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)
'STUDY > iOS' 카테고리의 다른 글
[swift] 동기와 비동기 (0) | 2025.04.29 |
---|---|
[swift] for - in과 forEach문에 대해 알아보자! (0) | 2025.04.29 |
[iOS] ViewController의 생명주기 (0) | 2025.04.18 |
다크모드 / 라이트 모드 전환 및 적용하는 방법 | 벡터 이미지 적용하기 (0) | 2025.03.29 |
iOS 개발 전에 정리하는 코드 스타일 가이드 📌 | 효율적인 협업과 유지보수를 위해... (0) | 2025.03.24 |