我有以下情节提要:
它如何工作?
主控制器具有以下方法:
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)!)
}
}
主情节提要板与以下视图及其标识的另一个视图链接:
执行此代码时,终端仅显示“ A”。
我如何使它起作用?
非常感谢。
答案 0 :(得分:0)
在情节提要中,“飞机选择”是父视图控制器,“飞机规格”是其子视图控制器。它们之间不可能有“ segue”。他们俩都同时在屏幕上显示他们的视图,所以没有地方可以从这里“去”。
如果该想法是要显示一个表格视图,其单元格可能受到搜索的限制,那么这不是搜索的工作,而是UISearchController体系结构的工作。
如果要建立一条从“飞机选择”视图控制器到“飞机规格”视图控制器的通信线路,则后者是飞机选择的子代,因此从飞机选择的角度来看,它是self.childViewControllers[0]
(或者,在Swift 4.2中,self.children[0]
)。您需要使用as!
将其放下才能作为飞机规格与之对话。