2009-08-31 5 views

Répondre

3

utilisation méthode [tableView reloadData] vue table ui

+0

Faites juste attention ce faire en mode Edit. – Amagrammer

0

ok .. mais .. nous avons besoin de la solution pour ce .. si l'on ajoute les cellules dans l'exécution, j'ai reçu la sortie avec les mêmes cellules première et dernière cellules du uitableview ..

vous pouvez effacer la cellule avant de l'ajouter des sous-vues

Exemple:

[mytableview.contentView clearsContextBeforeDrawing]; 
24

Effacer vos données avant d'appeler r eloadData, et maintenant l'utilisateur verra la table être effacé et re-peuplé avec de nouvelles données.

myArray = nil; 
[myTableView reloadData]; 
0

Vous pouvez regarder la valeur de la cellule réutilisée et si ce n'est pas la même chose - puis recréer.

(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
MyLog(@"Start Table: cellForRowAtIndexPath: %d", indexPath.row); 

NSString *MyIdentifier = [NSString stringWithFormat:@"MyIdentifier %i", indexPath.row]; 
UILabel *lblNew; 
lblNew = [UILabel new]; 
UILabel *lblCell; 
lblCell = [UILabel new]; 

MyTableCell *cell = (MyTableCell *)[tableView dequeueReusableCellWithIdentifier:MyIdentifier]; 

if (cell == nil) 
{ 
    cell = [[[MyTableCell alloc] initWithFrame:CGRectZero reuseIdentifier:MyIdentifier] autorelease]; 
    [cell.contentView addSubview:[lblNameArray objectAtIndex:indexPath.row]];  
} 
else 
{ 
    lblNew = [lblNameArray objectAtIndex:indexPath.row]; 
    for (id label in [cell.contentView subviews]) 
    { 
     if ([label isKindOfClass:[UILabel class]]) 
     { 
      lblCell = label; 
     } 
    } 
    if (![lblNew.text isEqualToString:lblCell.text]) 
    { 
     cell = [[[MyTableCell alloc] initWithFrame:CGRectZero reuseIdentifier:MyIdentifier] autorelease]; 
     [cell.contentView addSubview:[lblNameArray objectAtIndex:indexPath.row]]; 
    } 
} 
return cell; 
2

C'était mon wrok autour qui a fonctionné. set cell = nil;

static NSString *CellIdentifier = @"Cell"; 
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
cell = nil; 
-1

J'ai eu deux entrées sur la sélection après le défilement. Maintenant, l'affichage est aussi propre que prévu! utilisé la solution

static NSString *CellIdentifier = @"Cell"; 
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
cell = nil; 

et aussi (BTW:. ClearsContextBeforeDrawing en mode autonome, il ne fonctionne pas

[cell.contentView clearsContextBeforeDrawing]; 

Simulator j'ai l'impression d'une réaction plus précise sur la sélection des cellules Merci

!
1

Par ailleurs, clearsContextBeforeDrawing est une propriété, et

[cell.contentView clearsContextBeforeDrawing]; 

ne fait rien sauf de retourner sa valeur.

0

Swift: Je ne sais pas c'est la meilleure façon ou non, mais j'utilise ce code pour effacer et roload données:

fileprivate func clearTable() { 
    self.tableviewData.removeAll(keepingCapacity: false) 
    self.tableView.reloadData() 
} 
Questions connexes