2015-03-13 87 views

回答

1

如果你的意思是說:防止後退按鈕導航到上一個控制器,並移動到第一個視圖控制器: 你可以做到這一點通過創建自定義後退按鈕 - 在故事板拖動一個按鈕,左上方導航欄,並將其連接到您的視圖控制器。在您的自定義後退按鈕的選擇寫:

[self.navigationController popToRootViewControllerAnimated:YES] 
0

假設你有一個視圖控制器棧,如:VC1> VC2> VC3,並且要在VC3攻回來的時候要回VC1,那麼你可以在設置該代碼VC2

[self.navigationItem setBackBarButtonItem:[[UIBarButtonItem alloc] initWithTitle:@"Back" style:(UIBarButtonItemStylePlain) target:self action:@selector(backToVC1)]]; 

然後,總是在VC2:

- (void)backToVC1 
{ 
    [self.navigationController popToRootViewControllerAnimated:YES]; 
} 
+0

是Objective-C的?我試圖在Swift中做,不知道如何映射它,但感謝想法:) – 2015-03-14 03:42:26

4

自定義後退按鈕似乎是最好的解決方案。動作方法內部的代碼看起來像在迅速以下幾點:

self.navigationController?.popToRootViewControllerAnimated(true) 

//只要改變時真亦假,如果你不希望它做動畫。

我希望這有助於(如果你還沒有找到答案)。乾杯!

3

當然,你可以實現一個自定義後退按鈕。但也有一個很好的方法來繼續使用默認按鈕。

在致電super.viewWillDisappear()之前,只需檢查當前viewController是否仍位於viewWillDisappear的導航堆棧中。如果不是,後退按鈕已被按下。然後你可以做popToRootViewControllerAnimated

override func viewWillDisappear(animated: Bool) { 
    if (navigationController?.viewControllers)!.contains(self) { 
     // back button was pressed 
     self.navigationController?.popToRootViewControllerAnimated(animated) 
    } 
    super.viewWillDisappear(animated) 
} 
相關問題