簡體   English   中英

如何強制后退按鈕轉到第一個視圖控制器(快速)

[英]How to Force Back Button to Go to First View Controller (swift)

我有導航控制器中嵌入的幾個視圖控制器的故事板。 由於故事板后期視圖中的導航邏輯,后退按鈕(位於左上角,導航欄中)不會返回到第一個視圖。 我想知道在哪里以及如何更改第二個視圖的后退按鈕的這種行為。 欣賞任何想法,例子。

在此輸入圖像描述

當然,您可以實現自定義后退按鈕。 但是還有一種很好的方法可以繼續使用默認按鈕。

在調用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)
}

自定義后退按鈕似乎是最佳解決方案。 你的action方法中的代碼在swift中如下所示:

self.navigationController?.popToRootViewControllerAnimated(true)

//如果你不想讓它動畫,只需將true更改為false。

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

如果您打算說:阻止后退按鈕導航到上一個控制器並移動到第一個視圖控制器:您可以通過創建自定義后退按鈕來執行此操作 - 將故事板中的按鈕拖到導航欄的左上角,然后將其連接到你的視圖控制器。 在自定義后退按鈕的選擇器中寫入:

[self.navigationController popToRootViewControllerAnimated:YES]

假設您有一個視圖控制器堆棧,如: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];
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM