Ios 在IndexPath执行一次的cellForRow是否太少?
今天发生在我身上的一件奇怪的事: 我正在使用表视图显示未来7天的事件<代码>行数部分硬编码为始终返回7Ios 在IndexPath执行一次的cellForRow是否太少?,ios,swift,xcode,uitableview,Ios,Swift,Xcode,Uitableview,今天发生在我身上的一件奇怪的事: 我正在使用表视图显示未来7天的事件行数部分硬编码为始终返回7 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return 7 } 在IndexPath的cellForRow中,我正在对自定义UITableViewCell进行排队。然后我创建一个名为today的变量来保存当前日期并打印它 func tableView(_ t
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 7
}
在IndexPath的cellForRow中,我正在对自定义UITableViewCell进行排队。然后我创建一个名为today的变量来保存当前日期并打印它
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let thisWeekCell = thisWeekTableView.dequeueReusableCell(withIdentifier: ThisWeekTableViewCell.reuseIdentifier()) as! ThisWeekTableViewCell
let today = Date()
print(today)
return thisWeekCell
}
当我运行应用程序时,我的UITableView
会在屏幕上显示正确的单元格数(7)。
但是,Xcode控制台只记录my today变量的值6次。这就是让我害怕的地方:每个细胞应该调用一次,对吗?那么,为什么屏幕上的单元格数量与cellForRow
Atindepath
中的代码执行的次数不一致呢?该方法
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { }
只有当系统需要将一个新单元格出列时才会调用它,这取决于在tableView的可见边界内容纳了多少单元格,因此,如果在tableView中只能容纳5个单元格,它将只被调用5次感谢您的输入,我实际上刚刚解决了问题所在 所有7个单元格实际上都在我的TableView的可见范围内,因此cellForRowAt肯定应该被调用7次。不需要滚动 问题似乎出在我的自定义单元格类中。我使用autolayout来计算单元格的高度,而不是给它一个固定的高度,但是在我的单元格xib文件中,我没有为单元格内的标签添加任何底部空间约束。这也导致XCode显示“约束模糊地建议tableview单元格内容视图的高度为零”警告。
只要我给标签一个底部空间约束,cellForRowAt就会被调用7次。奇怪…在可见屏幕上只安装了6行,所以它被打印了6次,滚动查看第七行和第七行。您修复了它,这很好,但在您提出问题时,这绝不是不可能的;因此,这不是一个可行的问答对。