Maison > Questions et réponses > le corps du texte
tableView 的cell中添加了计算cell的高度并且调用代理方法,返回给视图控制器
当服务器返回数据源的时候,刷新tableView。
但是,此时执行的cellForRowIndexPath 的indexPaht 是从第四行开始的,,
将前边的几个给跳过了,
我试着将cell的高度写成定值,
结果cell的数量正常,
这会是什么问题?
迷茫2017-05-02 09:31:21
Il se pourrait que le calcul de l'altitude soit en retard.
L'ordre d'affichage de tableView est approximativement :
Demande sectionNumber
et numberForSection
pour obtenir le nombre de sections et de cellules.
Demande heightForRow:atIndexPath
pour obtenir la hauteur de la cellule qui sera affichée sur l'interface.
demande ensuite à cellForRow
d'obtenir une instance de cette cellule.
Définissez ensuite la hauteur de la cellule, etc. Après la mise en page, appelez les méthodes de rappel telles que willDisplay
puis affichez-la sur l'interface.
Ainsi, lorsque vous actualisez tableView, la partie hauteur doit être traitée en calculant d'abord la hauteur de la cellule en fonction de la source de données au lieu de laisser l'instance de cellule la calculer, puis de rappeler le contrôleur. Bien sûr, vous pouvez également calculer dans la cellule. Par exemple, il existe une méthode de classe dans la cellule, qui est calculée sur la base des données de cellule entrantes, et le contrôleur appelle activement cette méthode. Le code approximatif est le suivant :
Dans la classe d'implémentation déléguée du contrôleur ou de la tableView :
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSDictionary *cellData = self.dataSource[indexPath.row];
return [MyTableViewCell cellHeightForData:cellData];
}
MaTableViewCell :
+ (CGFloat)cellHeightForData:(NSDictionary *)cellData
{
// 根据 cellData 计算 cell 的高度
return height;
}