dismiss function

dismiss(animated:completion:)

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

  • UIViewController1
  • UIViewController2
  • UIViewController3

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

dismiss(animated: true, completion: nil)

不過這麼做的話,執行 present(, animated: , completion: ) 的 UIViewController, 就不會知道是在哪個流程或是哪個畫面 dismiss 的。 比較好的做法是,會被 present 的 UIViewController 都能透過 delegate 的方式, 告知原本的 UIViewController 「我按下了什麼按鈕」, 再由前面的 UIViewController 來決定是否 dismiss 或是做其他事。

讓整體的流程能夠得到比較好的控制,也讓 UIViewController 彼此之間的關係有個清楚的釐清。

comments powered by Disqus