self.view.window!.rootViewController?.dismissViewControllerAnimated(false, completion: nil)
반응형
내 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)
모델로 제시하기
NavigationController로 화면을 연결해 주었다면(push, pop) 네비게이션용 popToRootViewController로
그냥 화면에서 버튼을 이어 (present, dismiss) 주었다면 dismissViewControllerAnimated
삽질 끝 얻은 행복은 달콤하다.
반응형
'iOS 앱 개발 > 앱 개발 중 깨달음' 카테고리의 다른 글
Operation Queue vs Dispatch Queue for iOS Application (0) | 2019.07.08 |
---|---|
[이게 무엇일까?] MGIsDeviceOneOfType is not supported on this platform. (0) | 2019.02.18 |
UIStoryboardSegue를 이용하여 다음 뷰에 값전달시에 주의할 점. (0) | 2019.02.18 |
ContentMode에 대해서..(Scale to Fill, Aspect Fit, Aspect Fill) (0) | 2019.02.17 |
세그를 막는 방법! shouldPerformSegue! (0) | 2018.09.28 |