>source

scrollView에 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
}

그러나 이것은 목록에 3 개의 항목이있는 경우 cellForRowAt가 두 번 실행되도록합니다. indexPath.row는 처음으로 0 1 2로 반환하고 두 번째는 1 2로 반환합니다.이 문제를 해결하는 모든 솔루션은 대단히 감사하겠습니다.


  • 답변 # 1

    우선 재정의 된 메소드 view에 대한 super call을 추가하십시오.

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

    둘째, 어떤 문제가 문제입니까?

    그러나 이것은 cellForRowAt가 두 번 발사되도록합니다.

    내 목록에 3 개의 항목이 있으면 indexPath.row가 처음으로 0 1 2로 반환되고 두 번째로 1로 반환됩니다.

  • 이전 r - 알파벳순으로 그룹별로 데이터 프레임 재정렬
  • 다음 c# - 단일성 - setactive가 정의되지 않았습니다