0
我試圖檢測何時一個視圖控制器從導航堆棧彈出,以一種方式,我有一個對堆棧的下一層(目前與Swift 3一起工作)的控制器的引用。謝謝有沒有辦法找出視圖控制器是否從導航堆棧中彈出?
我試圖檢測何時一個視圖控制器從導航堆棧彈出,以一種方式,我有一個對堆棧的下一層(目前與Swift 3一起工作)的控制器的引用。謝謝有沒有辦法找出視圖控制器是否從導航堆棧中彈出?
UINavigationController
有一個屬性viewControllers
包含當前在堆棧上的視圖控制器的數組。你可以得到視圖控制器的數組,然後從該數組中獲取倒數第二個視圖控制器:
guard let navController = self.navigationController else {
print("We are not part of a navigation stack!")
return
}
let stack = navController.viewControllers
let stackCount = stackCount
if stackCount > 1 {
let nextVC = viewControllers[stackCount - 2]
//nextVC now contains the view controller one down from the current VC
} else {
//We are the root view controller
}
啊,得到它的工作,謝謝。只是想通過調用willmovetoparent和訪問viewcontrollers數組也可以做到這一點。 –
我不相信導航控制器和他們的孩子的父母/孩子的關係是記錄在案的,所以我不會指望它。在將來的OS發行版中,實現細節可能會從您下面更改並破壞您的代碼。 –
同意,我已經實施您的解決方案並將其添加到我的代碼片段。謝謝! –