簡體   English   中英

如何獲取觸發segue的視圖控制器

[英]How do I get the view controller that trigger the segue

我如何在不使用委托的情況下獲取觸發segue的視圖控制器。 並且沒有在prepareForSegue中設置它。 並且兩個視圖控制器都將嵌入其導航控制器中。

我想從呈現的視圖控制器中獲取該視圖控制器。 我知道這不是iOS方式,因為iOS方式正在使用委托。

但我將不勝感激如何獲得參考。

您應該了解兩個主要概念。 第一個是導航控制器,它將新的視圖控制器推入其viewControllers堆棧的頂部,第二個是一個簡單的模態視圖控制器,它僅表示一個新的視圖控制器。

如果您使用的是導航控制器,並將新的視圖控制器推入堆棧,則可以使用以下方法來獲取將其推入其中的視圖控制器,

if let viewControllers = navigationController?.viewControllers, viewControllers.count > 1 {

    let presentingViewController = viewControllers[viewControllers.count - 2]
}

而且,如果是模式視圖控制器,則可以只在UIViewController上使用presentingViewController屬性。 還要注意,presentingViewController是可選的,這意味着,如果此視圖控制器未在提供該視圖控制器的viewcontroller的presentedViewController中使用,則presentingViewController變為nil。

您可以從UINavigationController檢索整個UIViewControllers堆棧:

let viewControllers = self.navigationController.viewControllers

您可以從末尾讀回:

if let viewController = viewControllers[viewControllers.count - x] {
    // Do stuff
}

其中x是一個整數,用於定義要返回的堆棧多遠。

暫無
暫無

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

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