recherche

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

objective-c - iOS 自定义tableView cell重用导致内容重复 问题 如何有效解决?急急急!!


 [self.tableView registerNib:[UINib nibWithNibName:@"NewTaskCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:NewTaskCellId];

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NewTaskCell *cell = [self.tableView dequeueReusableCellWithIdentifier:NewTaskCellId forIndexPath:indexPath];
    if (!cell) {
        cell = [[NewTaskCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NewTaskCellId];
    }
    if (self.taskList.count > indexPath.row) {
        FindDisOrderInfoEntity *entity = [self.taskList objectAtIndex:indexPath.row];
        [cell setCellContentWith:entity];
    }
    return cell;
}
大家讲道理大家讲道理2772 Il y a quelques jours494

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

  • 迷茫

    迷茫2017-04-18 09:59:24

    Supprimer if (self.taskList.count > indexPath.row)
    Affectation normale de la cellule
    Lorsque la cellule augmente, actualisez le tableau ou actualisez la nouvelle ligne

    répondre
    0
  • 巴扎黑

    巴扎黑2017-04-18 09:59:24

    Vous devez d'abord regarder le nombre de cellules dont vous disposez. Deuxièmement, le concept de cellules est celui de conteneurs. Le pouvoir décisionnel réside dans la source de données

    .

    répondre
    0
  • 阿神

    阿神2017-04-18 09:59:24

    Vous vous êtes déjà inscrit en utilisant la méthode registerNib. Il n'est pas nécessaire de déterminer si la cellule est vide dans la méthode proxy

    répondre
    0
  • 高洛峰

    高洛峰2017-04-18 09:59:24

    Écrivez ceci dans la méthode proxy (UITableViewCell )tableView:(UITableView )tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath :

    NewTaskCell *cell = [self.tableView dequeueReusableCellWithIdentifier:NewTaskCellId forIndexPath:indexPath];
    FindDisOrderInfoEntity *entity = [self.taskList objectAtIndex:indexPath.row];       [cell setCellContentWith:entity];
    return cell;

    répondre
    0
  • PHP中文网

    PHP中文网2017-04-18 09:59:24

    Réutilisation des cellules, la réutilisation est l'état précédent, tel que UIButton et UILabel sur la cellule Si UIButton est l'état en surbrillance UILabel sur text=@"label" avant la réutilisation, puis après la réutilisation, UIButton. est toujours en surbrillance, le UILabel de text est toujours label et la méthode cell sera appelée lorsque cellForRow sera réutilisée. Par conséquent, les valeurs et les états sont généralement réaffectés et modifiés dans cellForRow. Il y a donc une règle par défaut dans la cellule, qui est 如果有if 那一定要有else, sinon la cellule deviendra chaotique.

    répondre
    0
  • PHP中文网

    PHP中文网2017-04-18 09:59:24

    Vous n'avez pas à juger si la cellule est vide après l'enregistrement, mais il n'y a rien de mal à cela. Pourquoi votre décompte doit-il être jugé ? Je ne comprends pas. Peut-être que votre tableau n'est pas une source de données ? Mais ce n'est probablement pas votre problème. Si votre "duplication de contenu" signifie que les contrôles sur la cellule sont ajoutés à plusieurs reprises, alors cela devrait être [cell setCellContentWith:entity]; il se peut que vous créez le contrôle ici et que vous l'ajoutiez. La réutilisation actualise uniquement les données, c'est-à-dire que seul le processus d'affectation ne crée pas le contrôle

    répondre
    0
  • 迷茫

    迷茫2017-04-18 09:59:24

    La tableview n'affiche pas grand chose. Si vous ne la laissez pas être réutilisée, elle ne sera pas répétée. De plus, après avoir appelé la méthode registerNib, la mémoire sera toujours pure CELL

    .

    répondre
    0
  • Annulerrépondre