我有一些计算密集型代码会在uitableviewcells中触发,但是我不希望它触发,直到该单元在iphone屏幕上可见为止。我是否可以注册任何回调,当单元对用户可见时,该回调将使我能够激活代码?我能找到的唯一解决方案是检查特定表格视图单元是否可见的代码。
答案 0 :(得分:1)
我认为您正在寻找这位代表:
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
if tableView.indexPathsForVisibleRows?.contains(indexPath) ?? false {
print("Cell \(indexPath.row)")
}
// Do something based on indexPath
}
但是,如果您尝试访问其他位置的可见行,则可以得到这样的可见行
let visibleCells = tableView.visibleCells
或
guard let indexPathForVisibleCells = tableView.indexPathsForVisibleRows else {
print("No visible cells found")
return
}
for index in indexPathForVisibleCells {
let cell = cellForRow(at: index)
// Do something with cell
}