获取 segue 的 indexPath

Get indexPath for segue

我正在尝试为某些 segue 操作获取现有单元格的 indexPath。

 override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
       if segue.identifier == "EditItem" {
       let controller = segue.destination as! TimerSelectViewController
       controller.delegate = self
       if let indexPath = tableView.indexPath(for: sender as! UITableViewCell) {
       controller.itemToEdit = timers[indexPath.row]
           }
       }
    }

我在 didSelectRowAt 中调用 segue:

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    tableView.deselectRow(at: indexPath, animated: true)
    performSegue(withIdentifier: "EditItem", sender: nil)

}

但是每次我点击单元格时,我都得到 nil 并且我的应用程序崩溃了。我不明白为什么

if let indexPath = tableView.indexPath(for: sender as! UITableViewCell) 

returns每次都为零。

要么你没有在 performSegue 方法中作为发送者传递任何东西,要么你传递的东西不是 UITableViewCell 的实例或其子类。

如果要求是获取所选单元格的索引路径,那么这可能是 How to get indexpath in prepareForSegue 的副本。

我的问题的答案:

我添加到 didSelectRowAt 单元格并将其放入 performSegue 的发件人中:

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    tableView.deselectRow(at: indexPath, animated: true)
    let cell: UITableViewCell = tableView.cellForRow(at: indexPath)!
    performSegue(withIdentifier: "EditItem", sender: cell)

}