我有一个使用两个类的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
行插入的单元格。