我正在尝试通过检查“willDisplay单元格”中的索引路径在UITableView中实现无限滚动,但是一旦表格加载了数据,“willDisplay单元格”func似乎在我向下滚动之前绘制所有单元格,尽管移动屏幕一次只能容纳一个或两个小区。
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
print(indexPath.row)
}
输出而不向下滚动:
0
1
2
3
4
5
当我向下滚动“willDisplay单元格”时,func工作正常并且一次打印一个indexpath.row。
这可能是什么问题?
以下是完整代码:
override func viewDidLoad() {
super.viewDidLoad()
postsTableview.delegate = self
postsTableview.dataSource = self
let nibName = UINib(nibName: "postTableViewCell", bundle:nil)
postsTableview.register(nibName, forCellReuseIdentifier: "postTableViewCell")
loadPosts()
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return posts.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "postTableViewCell", for: indexPath) as! postTableViewCell
return cell
}
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
print(indexPath.row)
}
我尝试将tableview单元格高度设置为固定的值超过屏幕高度,但我仍然遇到同样的问题
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat{
return 1000.0;
}
答案 0 :(得分:1)
事实证明我需要设置估计的行高。我来自Android背景,这对我来说听起来很傻,但结果却很明显。
postsTableview.estimatedRowHeight = 400
postsTableview.rowHeight = UITableViewAutomaticDimension
答案 1 :(得分:0)
在您编辑的问题上:
iOS没有任何问题,所有表格/集合视图单元格在显示之前都会被绘制出来;想象一下表格视图在开头显示时没有显示任何内容,这会不会很奇怪?
我不知道你在细胞展示后想要达到的目标,但我相信这适合另一个问题,祝你好运!