我想知道一个单元格是否在表格视图中显示在屏幕上。
我尝试了willDisplay
方法,但没有用。我甚至试过
if (tableView.indexPathsForVisibleRows?.contains(indexPath))! {
print("showing now")
}
此功能有效,但当单元格在屏幕上或向下滚动时,它不会打印任何内容。例如:如果我有5个单元格,当应用程序启动并且单元格在显示屏上时,不会打印任何内容。此外,当我从单元格1滚动到5时,不显示任何内容。相反,如果我从单元格5回滚到1,它将显示它,这完全违背了我的目的。
我希望您理解我的疑问,并能帮助我找到合适的解决方案。
干杯!
答案 0 :(得分:1)
willDisplay
方法应该适合您。
正确地提供DataSource
和Delegate
。 Control+drag
从TableView
到黄色图标会显示正确的选项。
将扩展名添加到ViewControllerClass
并确认表格协议 - :
extension ViewController : UITableViewDelegate,UITableViewDataSource{
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}// Default is 1 if not implemented
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
return 2
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{
let cell = tableView.dequeueReusableCell(withIdentifier: "cell")
cell?.textLabel?.text = indexPath.row
return cell!
}
// will display prints while displaying cells
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
print("visible now")
}
答案 1 :(得分:0)
请务必联系UITableView
的{{1}}媒体资源,并遵守delegate
。
尝试
UITableViewDelegate
来自func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
print("cell \(indexPath.row) is about to display")
}
的协议。可以找到文档here。