練習-回到之前的頁面

在UIKit中,回到之前的頁面有不同的方式,本篇以Storyboard為基礎,練習以下幾種:

Unwind, Dismiss, Pop

首先,project Storyboard的結構:

分開上下兩條path

第二條path (Z0~B1)

從Z0 的button直接拖Segue到B1,選擇Present Modally。完成後,在Z0按button,就會從下彈出B1頁

從B1回Z0, 可以有幾種方法:

  • 可以用手勢操作Swipe回去
  • 可以unwind**回去,前提是在想要回到的頁declare了unwind method
  • 由於B1 是由Present方法trigger,由Present方法trigger的頁,可以用dismiss 返回。這裡我為B1 獨立開了個ViewController文件,從自定返回button拉IBAction,裡面放dismiss的code。Dismiss 的code也很簡單,如下

Dismiss只是返點了上一頁,如果前面還有好幾頁用show trigger的頁,像A1~A3,dismiss是不會返回。這裡做了實驗,由A2 present modally 去A4, A4 dismiss 只會回到A2

第一條Path (Z0 ~A3/A4)

Z0 show to A1,

A1 show to A2,

A2 show to A3, present modally to A4, Unwind to Z0

A4 Dismiss to A2

A3使用了pop 方法,分別pop回上一頁A2, pop回特定頁A1,pop回最初的頁

popToRootViewController 的命名 意思很明顯,回到root的controller

popViewController是返回上一頁

popToViewController是返回到指定的頁面,這裡的navigationController.viewControllers 是一條array,包括了由root到到目前頁的page,因此上圖裡,先確定了有navigationController,再count navigationController.viewControllers有多少頁,最後從目前頁減去需要的頁,得出指定的頁,跳轉

(注意這裡的count,由Z0 到 A1, A2, A3, 共4頁,Count = 4,但由於array 是從0開始數,A1頁在array裡是 在 1 的位置,所以要跳到1, 就要count - 3, 而不是由A3 那條減兩頁就等如A1)

GIF: 用pop跳回不同頁

Unwind 和 Dismiss

Unwind 和 Dismiss 2

--

--