在Swift中无法将类型'UITableViewCell'的值转换为'NSIndexPath'

时间:2019-12-18 02:41:06

标签: ios swift uitableview segue

我正在表格视图中显示数据,并在其TableViewCell单击I上添加了显示顺序,以便移至DetailsController并通过单击的IndexPath传递单元格的数据参数中的另一个控制器。 这是segue代码:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    performSegue(withIdentifier: "toDetails", sender: indexPath)
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    let indexPath = sender as! IndexPath
    let indice = indexPath.row as NSInteger
    let nomCandidat = "candidats"

    let detailsViewController = segue.destination as! DetailsViewController
    detailsViewController.idtrip = 10
}

我确保segue标识符正确。

错误:

  

无法将类型UITableViewCell的值强制转换为NSIndexPath

1 个答案:

答案 0 :(得分:2)

您不能发送indexPath作为发件人参数。 sender:是触发segue的UI元素,在本例中为UITableViewCell。 因此,您可以像这样在发送方中发送tableViewCell实例:

guard let cell = tableView.cellForRowAt(indexPath: indexPath) else {return}
//alternatively 
//let cell = tableView.cellForRowAt(indexPath: indexPath)! 
performSegue(withIdentifier: "toDetails", sender: cell)