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 彼此之間的關係有個清楚的釐清。

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s