2011-05-20 4 views
1

Dans mon application, une fonction de rappel de délégué est appelée à partir d'une autre classe. Cette fonction de délégué consiste à repeindre l'écran. comme,UIView Ne pas mettre à jour UILabel

-(void)repaint { 
    [self.view setNeedsDisplay]; 
} 

j'ai même enlevé la sous-vue de UIView puis ajouté à nouveau la sous-vue. Mais le problème persiste toujours.

Mon UIView ne se met pas à jour.

J'ai NSLog le label.text et le texte est mis à jour. mais la vue d'écran ne met pas à jour.

Quelqu'un peut-il m'aider s'il vous plaît.

Merci

+0

Peut-être, vous venez de changer le texte dans une autre étiquette? ; – Zapko

+0

Vérifiez la couleur du texte et alpha. – quaertym

+0

Etes-vous sûr de avoir connecté l'étiquette dans Interface Builder? – FreeAsInBeer

Répondre

0

Une idée et une suggestion. Si vous changez correctement le texte, vous n'avez pas besoin de dire à votre vue setNeedsDisplay - l'étiquette l'aura dit. (Cet appel est normalement effectué lorsque vous avez du code dans drawRect: que vous devez exécuter.)

1) Lorsque l'étiquette est modifiée, est-ce fait sur le filetage principal? Le rappel est-il sur le thread principal? Ajouter un assert à votre code où cette étiquette est vérifié:

NSAssert([NSThread isMainThread], @"Yikes! Not on main thread"); 
NSAssert(label, @"Yikes! No label"); 

2) Dans le délégué ci-dessus, essayez de changer un tas de choses liées à cette étiquette

label.text = @"Hello World"; 
label.textColor = [UIColor redColor];