首页 > 解决方案 > UITableView.visibleCells.contains(JDHeaderTableViewCell()) 总是返回 false

问题描述

当我打印可见单元格时,它会显示两种类型的单元格,见下文po cells ▿ 2 elements - 0 : <David.JDHeaderTableViewCell: 0x7fc6880e7a00; baseClass = UITableViewCell; frame = (0 0; 375 210); autoresize = W; layer = <CALayer: 0x600000600200>> ▿ 1 : <David.JDContainerTableViewCell: 0x7fc68a810000; baseClass = UITableViewCell; frame = (0 250; 375 792); autoresize = W; layer = <CALayer: 0x600000655540>>

但是当我尝试获取单元格对象时,它返回 false

(lldb) po cells.contains(JDHeaderTableViewCell())

错误的

我尝试过以下几行:

let indexPath = IndexPath(row: 0, section: 0)
        let cell = self.jdTableView.cellForRow(at: indexPath) as! JDHeaderTableViewCell

但我需要先检查,然后再需要特定的单元格。

标签: iosswiftuitableview

解决方案


contains方法用于检查对象是否包含在给定的数组中,在这里您正在创建新对象JDHeaderTableViewCell()并检查它是否包含在给定的可见单元格中。当您创建了新的空对象时,很明显它将返回 false。

如果您想JDHeaderTableViewCell从可见单元格中获取键入的单元格并使用该单元格,请执行以下操作:

let headersCells = tableView.visibleCells?.filter({ (cell) -> Bool in
                return cell is JDHeaderTableViewCell
            })

如果没有,headerCells则将为零。如果它包含数组将包含所有对象。现在你必须得到你想要的任何索引。visibleCellsJDHeaderTableViewCell


推荐阅读