当前位置:  开发笔记 > 编程语言 > 正文

无法在UILabel上设置文本字段

如何解决《无法在UILabel上设置文本字段》经验,为你挑选了1个好方法。

我创建了一个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];

这似乎没有什么区别.

任何帮助将非常感激.



1> Ben Gottlieb..:

你有没有在任何地方设置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只读,因为你只想从课外访问它,从不设置它.

推荐阅读
ifx0448363
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有