设置UITableviewcell使其在可见时获得通知?

时间:2018-08-13 05:46:39

标签: ios uitableview

我有一些计算密集型代码会在uitableviewcells中触发,但是我不希望它触发,直到该单元在iphone屏幕上可见为止。我是否可以注册任何回调,当单元对用户可见时,该回调将使我能够激活代码?我能找到的唯一解决方案是检查特定表格视图单元是否可见的代码。

1 个答案:

答案 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
}