我有一个使用两个类的tableView:CustomCellOne和CustomCellTwo。customcell2显示在indexPath.row==1处,其余时间显示CustomCellOne。
customcelone显示名为tableArray的数组中的数据。但是,CustomCellTwo之后的单元格在数组中缺少一个元素,因为数组中的第二个项正在被表中的CustomCellTwo替换。
我目前能想到的唯一解决方案是将一个冗余元素作为indexPath 1添加到tablerarray中,然后将跳过该元素,但这看起来并不优雅。

 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    if indexPath.row == 1 {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cellTwo", for: indexPath) as! CustomCellTwo

        cell.label.text = ""
        return cell
    } else {
    let cell = tableView.dequeueReusableCell(withIdentifier: cellOne, for: indexPath) as! CustomCellOne

    cell.label.text = tableArray[indexPath.row]
    return cell
}

最佳答案

当索引大于1时减小索引。您可以通过引入row值,然后根据需要进行调整来完成此操作:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    if indexPath.row == 1 {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cellTwo", for: indexPath) as! CustomCellTwo

        cell.label.text = ""
        return cell
    } else {
        let cell = tableView.dequeueReusableCell(withIdentifier: cellOne, for: indexPath) as! CustomCellOne
        let row = indexPath.row < 1 ? 0 : indexPath.row - 1
        cell.label.text = tableArray[row]
        return cell
    }
}

注意:您需要返回tableArray.count + 1作为0节中的行数,以说明在1行插入的单元格。

10-08 08:05