조회 수 1608 추천 수 0 댓글 0
Atachment
첨부 '2'
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

Modal Views, Navigation Views 한꺼번에 닫기 (popToRoot)

다음과 같이 모달 뷰가 쌓여 있는 상황을 가정한다.


View-0 presents View-1 which presents View-2.


View-0 화면이 Root이고 View-2가 사용자가 보는 최상위 화면이다.

이 때, View-2에서 View-0으로 바로 이동하려고 할 때 기대되는 동작은 View-2가 애니메이션으로 pop 또는 dismiss 되면서 그 밑에 View-0 화면이 보이는 것이다. (이 과정에서 중간의 View-1는 보이지 않아야 한다.)


하지만, 다음과 같이 구현하면 View-2View-1 순서대로 보이면서 사라지거나 View-2 대신 View-1이 애니메이션으로 pop/dismiss 되면서 View-0 화면이 보이게 된다.


self.presentingViewController?.presentingViewController?.dismiss(animated: true, completion: nil)

Or

self.presentingViewController?.dismiss(animated: false, completion: nil)
self.presentingViewController?.dismiss(animated: true, completion: nil)


저 코드는 이렇게 동작할 것이다.

behavior_01.gif


하지만, 모달 뷰가 여러 개 겹쳐서 실행되고 있을 때 최상위 모달 뷰에서 다른 뷰를 보지 않고 최상위 뷰가 애니메이션 되면서 한번에 Root 화면으로 이동하고 싶을 때 이렇게 하면 된다.


@IBAction func dismissViewControllers(_ sender: UIButton) {
    var initialPresentingViewController = self.presentingViewController
    while let previousPresentingViewController = initialPresentingViewController?.presentingViewController {
        initialPresentingViewController = previousPresentingViewController
    }


    if let snapshot = view.snapshotView(afterScreenUpdates: true) {
        initialPresentingViewController?.presentedViewController?.view.addSubview(snapshot)
    }

    initialPresentingViewController?.dismiss(animated: true)
}


이렇게 잘 동작한다 ㅋㅋ

behavior_02.gif



[참고] https://stackoverflow.com/questions/54266115/how-to-dismiss-2-modal-view-controllers-without-weird-animation/54266224

[참고] https://stackoverflow.com/questions/3229755/dismissing-multiple-modal-view-controllers-at-once


?

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
181 System/OS [linux] wget 명령 사용 예제 hooni 2020.05.26 1622
» Develop [swift] popToRoot 모달뷰, 네비게이션컨트롤러 한꺼번에 닫기 file hooni 2021.01.29 1608
179 Develop How to Test SMTP AUTH using Telnet hooni 2018.04.05 1595
178 Develop What is difference between Get, Post, Put and Delete? hooni 2018.02.28 1577
177 System/OS How to Install and Use wget on Mac file hooni 2020.09.03 1551
176 System/OS SSH Passwordless Login Using SSH Keygen in 5 Easy Steps file hooni 2019.11.22 1549
175 Etc 아이폰의 터치스크린 정확도 file hooni 2015.04.01 1531
174 Etc 원어민이 매일 쓰는 일상표현 150개 file hooni 2023.09.17 1525
173 System/OS RPA란? 어디에 어떻게 쓰이고 누가 만드나? file hooni 2020.01.28 1524
172 Develop [ios] Swift 4 String, Date, DateFormatter 예제 hooni 2018.10.18 1520
171 Etc 모바일 프로그래머가 갖추어야 할 필수 역량 file hooni 2017.02.16 1516
170 System/OS Configure Postfix to Use Gmail SMTP on Ubuntu 18.04 file hooni 2020.02.07 1509
169 Etc ISMS 인증기준 – 정보보호대책 (시스템개발보안) file hooni 2016.12.01 1506
168 Develop macOS에 node, npm 설치하기 (homebrew) file hooni 2021.11.06 1481
167 System/OS [mac] Mac OS 패키지 매니저, HomeBrew file hooni 2015.01.03 1480
166 Develop [android] 간단한 SQLIite 예제 hooni 2017.06.14 1478
Board Pagination Prev 1 ... 61 62 63 64 65 ... 74 Next
/ 74