2010-01-10 7 views
1

J'ai une vue d'ensemble tirant d'une source de données. J'ai le code pour mettre à jour une étiquette dans la fonction de didSelectRow, mais l'étiquette ne met pas à jour. Lorsque j'imprime la valeur sur le NSLog, la valeur correcte est imprimée. Y at-il quelque chose de spécial que je dois faire pour raccorder l'étiquette afin qu'elle se mette à jour quand didSelectRow est eneter?Étiquette non mise à jour avec sélecteur

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{ 
if (pickerView.tag == TagLensPicker){ 
    [self lensArrayData]; 
    label.text = [NSString stringWithFormat:@"%@",[description objectAtIndex:[pickerView selectedRowInComponent:0]]]; 
    NSLog([NSString stringWithFormat:@"%@", [description objectAtIndex:[pickerView selectedRowInComponent:0]]]); 

} 

}

Répondre

1
[pickerView selectedRowInComponent:0] 

pourrait être la source de votre problème.

[description objectAtIndex:row] devraient travailler

+0

Il obtient la valeur correcte ("Lorsque j'imprime la valeur sur le NSLog, la valeur correcte est imprimée."), Donc ce n'est probablement pas la source du problème. –

+0

L'un ou l'autre de ces deux codes fonctionne pour mettre à jour le didSelectRow, j'ai l'impression d'informations à NSLog et je peux aussi afficher les données dans un message UIAlert, mais je peux obtenir les données "push" à mon label. Aucune suggestion? – Michael

+0

Eh bien, oui, j'ai suggéré que l'étiquette n'est peut-être pas une référence correcte - voir ma réponse quelque part par ici. –

0

Si NSLog imprime la valeur correcte, il doit y avoir un problème avec la variable d'étiquette.

Imprimez-le en utilisant NSLog, voir si c'est une référence correcte à votre étiquette?

En outre, vous pouvez essayer d'appeler [label setNeedsDisplay] après avoir changé le texte, même si je ne suis pas sûr que ce soit nécessaire.

+0

J'ai l'étiquette définie dans le fichier .h comme IBOutlet UILabel * label; J'ai ensuite connecté l'étiquette à l'onglet "Outlets" dans IB sous l'onglet Connections pour la classe dans laquelle l'étiquette est définie. Ensuite, dans le fichier .m, j'appelle le code que j'ai écrit ci-dessus dans le didSelectRow. J'ai essayé de copier verbatum l'exemple UICatalog, sauf que mon label est construit dans IB. J'essaie d'utiliser à la fois la commande @property et sans elle (je ne comprends toujours pas ce que fait @propery). Est-ce que l'étiquette est incorrecte dans IB builder? Si je mets à jour le texte avec un IBAction, le libellé est mis à jour correctement (mais pas dynamiquement) – Michael

+0

Votre libellé doit être '@property (nonatomic, retain) IBOutlet UILabel * libellé;' Ensuite, dans l'implémentation de la vue, utilisez ' @synthesize label; Dans le code que vous avez collé, avant 'label.text = ...', essayez 'NSLog (@"% @ ", label)' et publiez ce que vous avez. –