2010-07-16 17 views
0

J'ai UITableview s qui définissent une autre vue UILabel s en fonction de la ligne sélectionnée.Les UILabels ne sont pas mis à jour lors du premier chargement de la vue.

Lors de la première sélection de n'importe quelle ligne, la vue se charge avec des étiquettes vides (rien de défini), dès que je navigue, puis lorsque je choisis une ligne après qu'elle charge parfaitement. Pourquoi les étiquettes ne sont-elles pas définies lors de la première sélection?

J'ai le code suivant:

NSLog(@"object at index 0 is %@", [tempArray2 objectAtIndex:0]); 

self.categoryQuoteViewController.aLabel.text = [tempArray2 objectAtIndex:0]; 
self.categoryQuoteViewController.bLabel.text = [tempArray2 objectAtIndex:1]; 

NSLog(@"the first label is %@",self.categoryQuoteViewController.aLabel.text); 

La première NSLog imprime la valeur, puis tout droit après le réglage et l'impression de la valeur de l'étiquette, il est null.

+0

si votre deuxième NSLog donne zéro pour% @, alors soit self.categoryQuoteViewController ou self.categoryQuoteViewController.aLabel doit sois nul. Avez-vous vérifié? Imprimez-les simplement en% x. – mvds

+0

juste essayé, ce n'est pas nil. mais self.categoryViewController.aLabel est null? – jarryd

Répondre

1

Le problème est que la vue de categoryQuoteViewController est chargée paresseusement, ce qui signifie qu'aucune de vos étiquettes n'est chargée tant que vous n'avez pas affiché la vue à l'écran. Donc, lorsque vous accéderez au categoryQuoteViewController.aLabel, ce sera nil.

Vous pouvez forcer le point de vue de charger en accédant à la propriété view sur le contrôleur de vue comme celui-ci:

/* Force the view to load so we can set the labels */ 
categoryQuoteViewController.view; 
+0

Parfait merci. – jarryd