2009-02-02 11 views
4

Dans mon application, je modifie la valeur d'une étiquette de texte à partir d'une valeur initiale de 0 et l'incrémente sur un événement tactile. Parfois, mais pas tout le temps, la nouvelle valeur sera superposée sur 0, ce qui est cool ..Texte UILabel chevauchant à la mise à jour?

Voici le code correspondant:

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 
UILabel *label = (UILabel *)[cell viewWithTag:1000]; 
label.text = qtyString; 

J'ai essayé d'enlever l'étiquette de la affichage, puis en ajoutant un autre avec la nouvelle valeur, mais cela n'a pas du tout affecté le problème. Lorsque je fais défiler la cellule (les étiquettes font partie d'une cellule de tableau) à l'extérieur de l'écran, les étiquettes s'affichent correctement. Oh, et je l'ai aussi essayé de faire

[tableView reloadData]; 

Et il fonctionne mieux, mais si je sélectionne une cellule et puis faites défiler pendant qu'il est mise en surbrillance, il dunettes sur cette cellule.

S'il vous plaît aider :(

Répondre

5

Sous vos options de UILabel Décochez « opaque », qui le corriger.

0

Changer le changement ne marche pas opaque, il altho il aurait logique été. Ce que vous pouvez faire si donner votre étiquette (UITableView *) tableView heightForRowAtIndexPath:: un Si vous utilisez

  • (CGFloat) tableView hauteur exacte .. Cette hauteur correspondra à la hauteur de votre bien. (NSIndexPath *) indexPath
    { retour 80;// retourne à virgule flottante qui sera utilisé pour une hauteur de rangée de cellules à l'index de ligne spécifiée
    }

Comme je ne puis faire la hauteur de l'étiquette 80 et qui bloquera ..

0

IMHO , la meilleure façon de faire le tour est d'ajouter un autre à:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease]; 
}else { 
    NSArray *cellSubs = cell.contentView.subviews; 
    for (int i = 0 ; i < [cellSubs count] ; i++) { 
     [[cellSubs objectAtIndex:i] removeFromSuperview]; 
    } 
} 

Hope this helps.

4

J'ai eu le même problème avec le texte d'UILabel qui a été brouillé, j'ai juste lu les autres solutions, je suis allé à IB, puis j'ai coché "Effacer le contexte avant de dessiner" et ça a résolu!

0

Dans mon cas, en changeant opaque à NON résoudre le problème de mise à jour le UILabel.text Je crée le uilabel dans le awakeFromNib.

14

cochez la case «efface le contexte graphique» pour moi, je l'ai désélectionné au début sans le vouloir ~~