我创建了一个UITableCellView
叫做的类NoteCell
.标头定义以下内容:
#import#import "Note.h" @interface NoteCell : UITableViewCell { Note *note; UILabel *noteTextLabel; } @property (nonatomic, retain) UILabel *noteTextLabel; - (Note *)note; - (void)setNote:(Note *)newNote; @end
在实现中,我有以下代码的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]; }
这无法设置文本字段,UILabel
日志消息的输出为:
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)
我还尝试UILabel
使用以下语法设置文本字段:
[self.noteTextLabel setText:newNote.noteText];
这似乎没有什么区别.
任何帮助将非常感激.
你有没有在任何地方设置noteTextLabel?这看起来对我来说就是你的消息是一个零对象.创建单元格时,noteTextLabel为nil.如果您从未进行过设置,那么您基本上就是在做以下事情:
[nil setText: newNote.noteText];
当你以后尝试访问它时,你这样做:
[nil text];
哪个会返回零.
在您的-initWithFrame:reuseIdentifier:
方法中,您需要显式创建noteTextLabel,并将其作为子视图添加到单元格的内容视图中:
self.noteTextLabel = [[[UILabel alloc] initWithFrame: CGRectMake(0, 0, 200, 20)] autorelease]; [self.contentView addSubview: self.noteTextLabel];
然后这应该工作.
另外,作为一个风格笔记,我会property
为noteTextLabel只读,因为你只想从课外访问它,从不设置它.