cari

Rumah  >  Soal Jawab  >  teks badan

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

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

曾经蜡笔没有小新曾经蜡笔没有小新2757 hari yang lalu576

membalas semua(1)saya akan balas

  • 迷茫

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

    Sepatutnya pengiraan ketinggian adalah ketinggalan.
    Turutan paparan tableView adalah kira-kira:
    Minta sectionNumber dan numberForSection untuk mendapatkan bilangan bahagian dan sel yang ada.
    Minta heightForRow:atIndexPath untuk mendapatkan ketinggian sel yang akan dipaparkan pada antara muka.
    kemudian meminta cellForRow untuk mendapatkan tika sel ini.
    Kemudian tetapkan ketinggian sel, dsb. Selepas susun atur, panggil kaedah panggil balik seperti willDisplay dan kemudian paparkannya pada antara muka.

    Jadi apabila anda memuat semula tableView, bahagian ketinggian hendaklah diproses dengan terlebih dahulu mengira ketinggian sel berdasarkan sumber data dan bukannya membiarkan tika sel mengiranya dan kemudian memanggil semula kepada pengawal. Sudah tentu, anda juga boleh mengira dalam sel Contohnya, terdapat kaedah kelas dalam sel, yang dikira berdasarkan data sel masuk, dan pengawal secara aktif memanggil kaedah ini. Kod anggaran adalah seperti berikut:

    Dalam kelas pelaksanaan perwakilan pengawal atau tableView:

    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        NSDictionary *cellData = self.dataSource[indexPath.row];
        return [MyTableViewCell cellHeightForData:cellData];
    }

    MyTableViewCell:

    + (CGFloat)cellHeightForData:(NSDictionary *)cellData
    {
        // 根据 cellData 计算 cell 的高度
        return height;
    }

    balas
    0
  • Batalbalas