objective-c - iOS 自定义tableView cell重用导致内容重复 问题 如何有效解决?急急急!!
大家讲道理
大家讲道理 2017-04-18 09:57:24
0
7
530

 [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;
}
大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

répondre à tous(7)
迷茫

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

巴扎黑

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

.
阿神

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

小葫芦

É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;
Ty80

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.

Ty80

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

迷茫

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

.
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal