dismiss(animated:completion:)

dismiss(animated:completion:)

這個 method 對於大家而言,應該都不陌生;
UIViewController 可以呼叫這個 method 來關閉,而它所關閉的概念如下:
UINavigationController

  • UIViewController1

  • UIViewController2

  • UIViewController3

不論現在 presentingViewController 是 UIViewController 1、2、或者是 3,
在這三者呼叫 dismiss(animated:completion:) 時,
都會把 UINavigationController 的所有 viewControllers 都 dismiss。
然而一個很常的使用方式是,我們會在 UIViewController 的物件之中,自行呼叫 dismiss:

不過這麼做的話,執行 present(, animated: , completion: ) 的 UIViewController,
就不會知道是在哪個流程或是哪個畫面 dismiss 的。
比較好的做法是,會被 present 的 UIViewController 都能透過 delegate 的方式,
告知原本的 UIViewController 「我按下了什麼按鈕」,
再由前面的 UIViewController 來決定是否 dismiss 或是做其他事。
 
讓整體的流程能夠得到比較好的控制,也讓 UIViewController 彼此之間的關係有個清楚的釐清。

Archie

An iOS developer with Swift.

您可能也會喜歡…

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *

Bitnami