Contents

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
번호 분류 제목 글쓴이 날짜 조회 수
841 Develop '2014 모바일 개발 트렌드' 발표자료입니다. file hooni 2014.10.02 974
840 Develop Aspect Oriented Programming in Objective-C hooni 2015.05.18 672
839 Develop DDay Memo 1.9.4 소스코드 secret hooni 2015.10.03 0
838 Develop GCM 사용하기 2 (단말에 GCM 구현하기) file hooni 2013.07.06 23248
837 Develop GCM 사용하기 3 (JSP로 GCM 푸시 서버 만들기) 4 file hooni 2013.07.06 25315
836 Develop git 브런치 배우기 (링크) hooni 2013.07.09 20571
835 Develop GPL, AGPL, MPL,.. 한눈에 보는 오픈소스SW 라이선스 file hooni 2014.10.14 1144
834 Develop How to Test SMTP AUTH using Telnet hooni 2018.04.05 1323
833 Develop JSON, BSON 변환 file hooni 2013.04.23 11814
832 Develop Laravel 5 Failed opening required bootstrap/../vendor/autoload.php hooni 2018.01.24 1643
831 Develop Mac OS 에 Jenkins 설치하기 (Homebrew) 2 file hooni 2017.03.15 8065
830 Develop macOS에 node, npm 설치하기 (homebrew) file hooni 2021.11.06 1126
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 71 Next
/ 71