簡體   English   中英

如何從上一個導航的VC返回到第一個VC

[英]How to return to the 1st VC from the last navigated VC

我僅使用segue來導航我的應用程序。

我只是想知道是否要從1st-VC導航到V2,再到V3再到4th-VC,如何直接從4th-VC導航回1st VC而又不返回V3,V2然后是VC1?

謝謝。

在我當前的應用程序中,我使用它來導航回到上一個VC(使用展開):

@IBAction func unwindToViewController (sender: UIStoryboardSegue){

    }

這是好習慣嗎?

您可以使用以下代碼-

func popToRoot() {
        self.navigationController?.popToRootViewControllerAnimated(true)
}

您可以在4th-VC中創建IBAction並調用popToRootViewControllerAnimated方法。

我知道三種選擇:

第一個(可能是最好的)是使用輕松的搜索。 它們在這里得到了詳細的解釋(SO問題)

第二個,如果您的VC1是根視圖控制器,則只需在VC4中使用此行:

self.navigationController?.popToRootViewControllerAnimated(true);

最后一個是將ViewControllers堆棧手動設置為所需的狀態(請注意,您將以某種方式獲取對VC的引用)。 例如,“退回三個VC”(對不起,在Swift的Xcode中,自動完成功能突然崩潰了,因此僅適用於Objective-C):

UINavigationController *navigationController = self.navigationController;
NSMutableArray *newVCs = [navigationController.viewControllers mutableCopy];

//This part would be more elegant in Swift, of course
[newVCs removeLastObject];
[newVCs removeLastObject];
[newVCs removeLastObject];

[navigationController setViewControllers:newVCs animated:YES];

第一個解決方案是最好的,因為它是最靈活的。 而且這不會使您對VC堆棧進行硬編碼。 但這確實取決於您的要求。 第二種方法到目前為止是最容易實現的,因此,如果需要返回到根VC,則是一種方法。 至於第三個,它比第一個更容易實現,但是我認為第一個是最正確的。

暫無
暫無

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

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