首页 > 解决方案 > 无法在 Swift 中将“UITableViewCell”类型的值转换为“NSIndexPath”

问题描述

我在表格视图中显示数据,并在其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

标签: iosswiftuitableviewsegue

解决方案


您不能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)

推荐阅读