Question

J'ai créé la classe UITableCellView appelée NoteCell . L'en-tête définit les éléments suivants:

#import <UIKit/UIKit.h>
#import "Note.h"

@interface NoteCell : UITableViewCell {
    Note *note;
    UILabel *noteTextLabel;  
}

@property (nonatomic, retain) UILabel *noteTextLabel;

- (Note *)note;
- (void)setNote:(Note *)newNote; 

@end

Dans l'implémentation, j'ai le code suivant pour la méthode setNote: :

- (void)setNote:(Note *)newNote {
    note = newNote;
    NSLog(@"Text Value of Note = %@", newNote.noteText);
    self.noteTextLabel.text = newNote.noteText;
    NSLog(@"Text Value of Note Text Label = %@", self.noteTextLabel.text);
    [self setNeedsDisplay];
}

Impossible de définir le champ de texte de UILabel et la sortie des messages du journal est:

2008-11-03 18:09:05.611 VisualNotes[5959:20b] Text Value of Note = Test Note 1  
2008-11-03 18:09:05.619 VisualNotes[5959:20b] Text Value of Note Text Label = (null)

J'ai également essayé de définir le champ de texte de UILabel à l'aide de la syntaxe suivante:

[self.noteTextLabel setText:newNote.noteText];

Cela ne semble pas faire de différence.

Toute aide serait très appréciée.

Était-ce utile?

La solution

Avez-vous configuré votre noteTextLabel n’importe où? Cela me semble que vous envoyez un objet nul à un message. Lorsque votre cellule est créée, noteTextLabel est nil. Si vous ne le configurez jamais, vous procédez comme suit:

[nil setText: newNote.noteText];

Et lorsque vous essayez ultérieurement d'y accéder, vous procédez comme suit:

[nil text];

Ce qui retournera nil.

Dans votre méthode -initWithFrame: reuseIdentifier: , vous devez créer explicitement votre noteTextLabel et l'ajouter en tant que sous-vue à la vue du contenu de votre cellule:

self.noteTextLabel = [[[UILabel alloc] initWithFrame: CGRectMake(0, 0, 200, 20)] autorelease];
[self.contentView addSubview: self.noteTextLabel];

Ensuite, cela devrait fonctionner.

De plus, en tant que note stylistique, je voudrais lire la lecture seule de la propriété de noteTextLabel, car vous ne souhaiterez y accéder que de l'extérieur de la classe. Ne le définissez jamais.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top