从未为Segue做准备

时间:2018-08-16 13:16:59

标签: ios swift

我有以下情节提要:

Image(Not enough reputation)

它如何工作?

  1. 用户可以看到所有单元格。
  2. 用户无法找到一个特定的单元格。
  3. 轻触单元格后,表视图消失,容器视图不再隐藏。
  4. 容器视图在按下的单元格中显示有关对象的所有信息。

主控制器具有以下方法:

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)!)
            }
        }

主情节提要板与以下视图及其标识的另一个视图链接:

Image

执行此代码时,终端仅显示“ A”。

我如何使它起作用?

非常感谢。

1 个答案:

答案 0 :(得分:0)

在情节提要中,“飞机选择”是父视图控制器,“飞机规格”是其子视图控制器。它们之间不可能有“ segue”。他们俩都同时在屏幕上显示他们的视图,所以没有地方可以从这里“去”。

如果该想法是要显示一个表格视图,其单元格可能受到搜索的限制,那么这不是搜索的工作,而是UISearchController体系结构的工作。

如果要建立一条从“飞机选择”视图控制器到“飞机规格”视图控制器的通信线路,则后者是飞机选择的子代,因此从飞机选择的角度来看,它是self.childViewControllers[0](或者,在Swift 4.2中,self.children[0])。您需要使用as!将其放下才能作为飞机规格与之对话。