我有一个带有2个原型单元格的动态tableView。我正在使用其中一个单元格用于节标题,节标题单元格拥有它自己的类。数据已经填充到这些单元格而没有问题。
我收到此错误消息"错误:“_canPerformAction中的意外的nil索引路径:forCell:sender:,这应该永远不会发生。”在运行时我点击节标题。任何人都知道如何摆脱这个错误?提前谢谢!
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "MachineTableViewCell") as! MachineTableViewCell
if self.uptime.count == self.machines.count {
cell.GPUNumber.text = self.allGPUNumber[indexPath.section][indexPath.row]
}
return cell
}
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
guard let header = tableView.dequeueReusableCell(withIdentifier: "header") as? HeaderTableViewCell
else {
return nil
}
let machine = machine[section]
header.name.text = machine.name + " - " + machine.ip + ":" + machine.port
return header
}
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat
{
return 124
}
答案 0 :(得分:2)
我最初也错过了这个,但如果你退后一步看看你几乎要踢的回报类型。
对于常规单元格,返回类型为UITableViewCell。
然而,对于标题是它的UIView。
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell")...
///
return cell
}
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let header = tableView.dequeueReusableCell(withIdentifier: "header")...
///
return header
}
因此,您需要做的是返回contentView。
return header.contentView