recherche

Maison  >  Questions et réponses  >  le corps du texte

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

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

曾经蜡笔没有小新曾经蜡笔没有小新2757 Il y a quelques jours578

répondre à tous(1)je répondrai

  • 迷茫

    迷茫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;
    }

    répondre
    0
  • Annulerrépondre