为什么indexPath.row从1开始而不是0

时间:2020-08-01 04:43:40

标签: ios swift uitableview

scrollView中有一个UITableView,由于以下功能,每次添加新值时,UITableView都会自动增长

class IntrinsicPostTableView: UITableView {

    override var contentSize:CGSize {
        didSet {
            self.invalidateIntrinsicContentSize()
        }
    }

    override var intrinsicContentSize: CGSize {
        self.layoutIfNeeded()
        return CGSize(width: UIView.noIntrinsicMetric, height: contentSize.height)
    }

}

override func viewWillLayoutSubviews() {
    super.updateViewConstraints()
    self.heightConstraint?.constant = self.tableView.intrinsicContentSize.height
}

但是这会导致cellForRowAt触发两次,如果我的列表有3个项目,则indexPath.row第一次返回0 1 2,第二次返回1 2。 / p>

1 个答案:

答案 0 :(得分:0)

最好设计一个代码,该代码假定UITableView的numberOfSections,numberOfRows或cellForIndexPath将在单元格的无序且非穷举的列表中调用。

在这种情况下,您还遇到了单元重用的问题,并且图像已根据单元模型进行了更新。在重用单元格的情况下,必须在UITableViewCell的prepareForReuse方法中将图像,资产或其他元素设置为初始值

相关问题