当我打印可见的单元格时,它显示两种类型的单元格,请参见下文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


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

最佳答案

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

如果要从可见单元格中获取JDHeaderTableViewCell类型的单元格并使用该单元格,请执行以下操作:

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


如果headerCells没有visibleCells,则JDHeaderTableViewCell将为nil。如果包含数组,则将包含所有该对象。现在,您只需获取所需的任何索引。

关于ios - UITableView.visibleCells.contains(JDHeaderTableViewCell())始终返回false,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53954533/

10-10 03:20