![](/img/trans.png)
[英]How do I trigger a segue to show a specific view, when not in a UIViewController?
[英]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.