I have created UITableCellView class called NoteCell. The header defines the following:
#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
In the implementation I have the following code for the setNote: method:
- (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]; }
This fails to set the text field of the UILabel and the output of the log messages is:
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)
I have also tried to set the text field of UILabel using the following syntax:
[self.noteTextLabel setText:newNote.noteText];
This does not seem to make a difference.
Any help would be much appreciated.
Have you set up your noteTextLabel anywhere? What this looks like to me is that you’re messaging a nil object. When you cell is created, noteTextLabel is nil. If you never set it up, you’re basically doing the following:
And when you later try to access it, you’re doing this:
Which will return nil.
In your
-initWithFrame:reuseIdentifier:method, you need to explicitly create your noteTextLabel, and add it as a subview to your cell’s content view:Then this should work.
Also, as a stylistic note, I would make the
propertyfor noteTextLabel readonly, since you’re only going to want to access it from outside the class, never set it.