错误:" _canPerformAction中的意外的nil索引路径:forCell:sender:,这绝不会发生。"

时间:2018-02-15 00:01:10

标签: swift uitableview header sections

我有一个带有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  
}

1 个答案:

答案 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