Почему indexPath.row начинается с 1 вместо 0 - PullRequest
0 голосов
/ 01 августа 2020

У меня есть UITableView в scrollView, который растет каждый раз, когда к нему добавляется новое значение из-за функции ниже

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. Мы будем очень признательны за любые решения, которые помогут с этой проблемой

1 Ответ

0 голосов
/ 01 августа 2020

Лучше разработать код, который предполагает, что numberOfSections, numberOfRows или cellForIndexPath из UITableView будут вызываться в неупорядоченном и неполном списке ячеек.

В вашем случае у вас также была проблема с ячейкой были повторно использованы и имели изображения, обновленные в соответствии с клеточной моделью. В случае повторного использования ячейки необходимо установить исходные значения для изображений, ресурсов или других элементов в методе prepareForReuse UITableViewCell

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...