찾다

 >  Q&A  >  본문

Objective-c - 처음 몇 개의 데이터 소스만 tableView에 표시되지 않습니다. 아래로 드래그하면 완전히 표시됩니다. 이유는 무엇입니까?

tableView의 셀이 추가되어 셀의 높이를 계산하고 뷰 컨트롤러에 반환되는 프록시 메서드를 호출합니다.
서버가 데이터 소스를 반환하면 tableView를 새로 고칩니다.
그런데 이때 실행된 cellForRowIndexPath의 indexPaht는 4번째 줄부터 시작하는데,
처음 몇 개는 건너뛰고,
셀의 높이를 고정값으로 쓰려고 했더니
결과가 나왔습니다. 셀 수가 정상이라는 건가요?
무엇이 문제인가요?

曾经蜡笔没有小新曾经蜡笔没有小新2827일 전625

모든 응답(1)나는 대답할 것이다

  • 迷茫

    迷茫2017-05-02 09:31:21

    고도 계산이 늦어지는 것 같습니다.
    tableView의 표시 순서는 대략 다음과 같습니다.
    요청 sectionNumbernumberForSection에 섹션과 셀이 몇 개 있는지 가져옵니다. 인터페이스에 표시될 셀의 높이를 가져오려면
    heightForRow:atIndexPath을 요청하세요.
    cellForRow에게 이 셀의 인스턴스를 가져오도록 요청합니다.
    그런 다음 셀의 높이 등을 설정합니다. 레이아웃 후 willDisplay 등의 콜백 메서드를 호출하여 인터페이스에 표시합니다.

    따라서 tableView를 새로 고칠 때 높이 부분 처리는 셀 인스턴스가 셀 높이를 계산하도록 한 다음 컨트롤러를 다시 호출하는 대신 데이터 소스에 따라 먼저 셀 높이를 계산하는 것이어야 합니다. 물론, 셀 내에서 계산할 수도 있습니다. 예를 들어, 셀에 들어오는 셀 데이터를 기반으로 계산되는 클래스 메서드가 있고 컨트롤러가 이 메서드를 적극적으로 호출합니다. 대략적인 코드는 다음과 같습니다.

    컨트롤러 또는 tableView의 대리자 구현 클래스에서:

    으아아아

    MyTableViewCell:

    으아아아

    회신하다
    0
  • 취소회신하다