Ios 在IndexPath执行一次的cellForRow是否太少?

Ios 在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

今天发生在我身上的一件奇怪的事:

我正在使用表视图显示未来7天的事件<代码>行数部分硬编码为始终返回7

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
At
indepath
中的代码执行的次数不一致呢?

该方法

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { }

只有当系统需要将一个新单元格出列时才会调用它,这取决于在tableView的可见边界内容纳了多少单元格,因此,如果在tableView中只能容纳5个单元格,它将只被调用5次

感谢您的输入,我实际上刚刚解决了问题所在

所有7个单元格实际上都在我的TableView的可见范围内,因此cellForRowAt肯定应该被调用7次。不需要滚动

问题似乎出在我的自定义单元格类中。我使用autolayout来计算单元格的高度,而不是给它一个固定的高度,但是在我的单元格xib文件中,我没有为单元格内的标签添加任何底部空间约束。这也导致XCode显示“约束模糊地建议tableview单元格内容视图的高度为零”警告。
只要我给标签一个底部空间约束,cellForRowAt就会被调用7次。奇怪…

在可见屏幕上只安装了6行,所以它被打印了6次,滚动查看第七行和第七行。您修复了它,这很好,但在您提出问题时,这绝不是不可能的;因此,这不是一个可行的问答对。