728x90
VC1 →(modal)→ VC2 →(navigation)→ VC3
Navigation Controller로 연결된 여러 뷰에서 또 다른 뷰를 Modal 방식으로 띄우는 건 비교적 쉽지만, Modal로 띄운 뷰에서 Navigation 형태로 Push하는 건 약간의 수고를 요한다.
단순히 Modal 하나만을 띄울 땐 StoryBoard 상에서 Segue를 끌어와 identifier와 prepare 메서드를 이용하여 Modal Presentation을 구현했다면, 이번에는 VC1 속 버튼 자체에서 코드 작업이 필요하다.
Navigation 형식의 Push를 원한다면 해당 뷰 컨트롤러(VC2)가 Navigation Controller에 Embed in 되어있어야 한다. 따라서 Modal 형태로 VC2를 품고 있는 NavigationController를 띄운다.
// VC2를 코드 내에서 사용 가능하게 선언(StoryBoard 상에서 identifier 지정 필수)
guard let vc = storyboard?.instantiateViewController(identifier: "VC2") as? VC2 else { return }
// navigationController를 선언하고 rootView로 VC2를 할당
let navigationController = UINavigationController(rootViewController: vc)
// 화면 전환 커스텀, 필자는 PullScreen으로 띄우고, VC2에서 navigationBar가 보이지 않게 설정
navigationController.modalPresentationStyle = .fullScreen
navigationController.isNavigationBarHidden = true
// 해당 navigationController를 모달 형태로 present
present(navigationController, animated: true)
해당 작업을 마치면, VC2 에서 Navigation 형태의 Push를 구현할 수 있다.
아직 기본적인 화면 전환과 데이터 전달이 버겁다면, 해당 링크들을 참고하자.
728x90
'Dev > iOS' 카테고리의 다른 글
[Dev, iOS] AlertViewController에서 UITextField와 UIDatePicker 사용하기 (0) | 2022.11.07 |
---|---|
[Dev, iOS] 앨범, 카메라 이미지 불러오기 & 저장하기 (0) | 2022.05.01 |
[Dev, iOS] 프로퍼티(변수) 값 변경마다 특정 메서드를 실행해야 할 때 (0) | 2022.02.27 |
[Dev, iOS] 같은 함수를 여러 프로퍼티에 적용하고 싶을 때 + 버튼에 그림자 만들기 (0) | 2022.02.27 |
[Dev, iOS] StoryBoard 없이 시작하기 (Xcode 13) (0) | 2022.01.27 |