[英]Prepare for Segue is never called
我有以下故事板:
這個怎么運作?
主控制器具有以下方法:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
searchBar.showsCancelButton = false
searchBar.text = filteredData[indexPath.row]
searchBar.resignFirstResponder()
tableView.isHidden = true
especificationView.isHidden = false
print("A")
performSegue(withIdentifier: "unwindToEspecification", sender: self)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
print("B")
if let indexPath = tableView.indexPathForSelectedRow{
aircraftSelected = aircrafts[indexPath.row]
}
}
爭論的觀點有:
func changeLabel(text: String) {
registrationLabel.text = text
}
@IBAction func unwindToEspecificationViewController (sender: UIStoryboardSegue) -> Void{
print("B")
if let controller = sender.source as? AircraftSelectionViewController, let data = controller.aircraftSelected{
self.aircraft = data
changeLabel(text: (aircraft?.registration)!)
}
}
主故事板鏈接到另一個視圖,帶有以下 segue 和他的標識符:
當我執行此代碼時,終端僅顯示“A”。
我怎樣才能讓它工作?
非常感謝。
在你的故事板中,Aircraft Selection 是一個父視圖控制器,而 Aircraft Especification 是它的子視圖控制器。 它們之間不可能有“segue”; 他們都在屏幕上同時顯示他們的觀點,所以從這里“去”無處可去。
如果這個想法是顯示一個表格視圖,其單元格可以被搜索限制,那不是 segue 的工作,而是 UISearchController 架構的工作。
如果想法是建立從 Aircraft Selection 視圖控制器到 Aircraft Especification 視圖控制器的通信線路,后者是 Aircraft Selection 的孩子,所以從 Aircraft Selection 的角度來看,它是self.childViewControllers[0]
(或,在 Swift 4.2 中, self.children[0]
)。 你需要用as!
把它扔掉as!
以便將其作為飛機電子規范進行討論。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.