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