iOS 앱 개발/앱 개발 중 깨달음

RootViewController로 가는 두가지 방법

mostlyjinsonit 2018. 9. 3. 21:09
반응형

내 View가 3개 (화면1, 화면2, 화면3)가 있다고 가정을 할때 


화면3에서 화면1로 가려면 어떻게 해야할까?


기본적으로 view는 stack구조라서 메모리 할당이 된 화면1과 화면2, 화면3이 순서대로 stack에 쌓인다.


나는 메인 스토리보드에서 화면3에서 화면1로 갈 때 그냥 segue로 show시키면 되는 줄 알았지만 그러면 화면1, 화면2, 화면3 그 위에 화면1이 올라온 상태라


굉장히 위험한 구조가 된다.


그렇다면 stack에 쌓여있는 것들을 한번에 빼고 루트뷰로 돌아갈 수 있을까?


답은 아래와 같다.



네비게이션 용

self.navigationController?.popToRootViewController(animated: true)
모델로 제시하기
self.view.window!.rootViewController?.dismissViewControllerAnimated(false, completion: nil)


NavigationController로 화면을 연결해 주었다면(push, pop) 네비게이션용 popToRootViewController


그냥 화면에서 버튼을 이어 (present, dismiss) 주었다면 dismissViewControllerAnimated 



삽질 끝 얻은 행복은 달콤하다.

반응형