Objective-c - Seules les premières sources de données ne sont pas affichées dans la tableView. Les faire glisser vers le bas les affichera complètement. Pourquoi ?
曾经蜡笔没有小新
曾经蜡笔没有小新 2017-05-02 09:29:21
0
1
613

La cellule de tableView est ajoutée pour calculer la hauteur de la cellule et appeler la méthode proxy, qui est renvoyée au contrôleur de vue
Lorsque le serveur renvoie la source de données, actualisez la tableView.
Cependant, l'indexPaht de cellForRowIndexPath exécuté à ce moment commence à partir de la quatrième ligne,
Les premières sont ignorées,
J'ai essayé d'écrire la hauteur de la cellule comme une valeur fixe,
Le résultat c'est que le nombre de cellules est normal.
C'est quoi le problème ?

曾经蜡笔没有小新
曾经蜡笔没有小新

répondre à tous(1)
迷茫

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;
}
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal