Nelson 寫些 iOS 開發的東東

如何直接回到 RootViewController

| Comments

UINavigationController 是在 iOS 開發當中大量使用到的一個元件,我們可以用 pushViewController:animated: 切換到下一層 view controller,也可以用 popViewControllerAnimated: 回到上一層,或是用 popToRootViewControllerAnimated: 回到最上層的 root view controller。不過這些動作都得透過某種方式來觸發,例如按下某顆按鈕然後就可以回到上一層。

舉例來說,我現在有三個 view controllers 在 UINavigationController 裡頭,分別是「商品頁」、「結帳頁」、「結果頁」,流程很簡單,就是讓使用者點選喜歡的商品之後,切換到結帳頁面,結帳成功之後會顯示結果,然後使用者點了左上角的「Back」就會回到商品頁(因為已經結帳成功了,不應該回到結帳頁)。

〔商品頁〕 +-->〔結帳頁〕+-->〔結果頁〕
  ^                          + 
  |                          |
  +--------------------------+ 

我最常看到的作法是,自訂 leftBarButtonItembackBarButtonItem,當使用者點下之後就會呼叫 popToRootViewControllerAnimated: 讓畫面回到「商品頁」,只不過我覺得這樣有點麻煩,所以我最近改用另一個方法。

我現在的作法是這樣:以這個例子來說,我會在「結帳頁」呼叫 pushViewController:animated: 切換到「結果頁」之後,把「結帳頁」從 UINavigationController 的 viewControllers 當中抽掉。

[self.navigationController pushViewController:resultViewController animated:YES];
NSMutableArray *viewControllers = [NSMutableArray arrayWithArray:self.navigationController.viewControllers];
[viewControllers removeObject:self];
self.navigationController.viewControllers = viewControllers;

如果你有其他的作法,歡迎分享給我知道 :)

Comments

comments powered by Disqus