찾다

 >  Q&A  >  본문

objective-c - tableView中只不显示数据源的前几个,稍微向下拖拽就会显示完全,什么原因?

tableView 的cell中添加了计算cell的高度并且调用代理方法,返回给视图控制器
当服务器返回数据源的时候,刷新tableView。
但是,此时执行的cellForRowIndexPath 的indexPaht 是从第四行开始的,,
将前边的几个给跳过了,
我试着将cell的高度写成定值,
结果cell的数量正常,
这会是什么问题?

曾经蜡笔没有小新曾经蜡笔没有小新2757일 전577

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

  • 迷茫

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

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

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

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

    으아아아

    MyTableViewCell:

    으아아아

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