Contents

Atachment
Attachment '2'
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print

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



?

  1. [js] 모바일 스크롤 방지(해제)

    Date2015.04.14 CategoryDevelop Byhooni Views1704
    Read More
  2. [ios] Swift 4 Singleton inheritance

    Date2018.10.31 CategoryDevelop Byhooni Views1696
    Read More
  3. [ios] 스크린 캡쳐 (전원버튼 + 홈버튼) 호출 알아내기

    Date2014.11.19 CategoryDevelop Byhooni Views1661
    Read More
  4. [ios] binary를 C코드로 변환

    Date2015.01.03 CategoryDevelop Byhooni Views1654
    Read More
  5. [android] 레이아웃 사이즈 변경 (동적; programmatically)

    Date2016.11.07 CategoryDevelop Byhooni Views1626
    Read More
  6. [swift] popToRoot 모달뷰, 네비게이션컨트롤러 한꺼번에 닫기

    Date2021.01.29 CategoryDevelop Byhooni Views1613
    Read More
  7. How to Test SMTP AUTH using Telnet

    Date2018.04.05 CategoryDevelop Byhooni Views1600
    Read More
  8. What is difference between Get, Post, Put and Delete?

    Date2018.02.28 CategoryDevelop Byhooni Views1590
    Read More
  9. [ios] Swift 4 String, Date, DateFormatter 예제

    Date2018.10.18 CategoryDevelop Byhooni Views1525
    Read More
  10. macOS에 node, npm 설치하기 (homebrew)

    Date2021.11.06 CategoryDevelop Byhooni Views1486
    Read More
  11. [ios] How to set up clang formatter

    Date2015.09.17 CategoryDevelop Byhooni Views1485
    Read More
  12. [android] 간단한 SQLIite 예제

    Date2017.06.14 CategoryDevelop Byhooni Views1484
    Read More
Board Pagination Prev 1 ... 56 57 58 59 60 61 62 63 64 65 ... 71 Next
/ 71