2008-11-03 3 views
3

Я создал UITableCellView класс под названием NoteCell. Заголовок определяет следующее:Невозможно установить текстовое поле на UILabel

#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 

В реализации у меня есть следующий код для 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]; 

Это, похоже, не имеет значения.

Любая помощь будет высоко оценена.

ответ

10

Вы создали где-нибудь место для заметок? Для меня это похоже на то, что вы отправляете сообщение нильскому объекту. Когда вы создаете ячейку, noteTextLabel равен нулю. Если вы не установите его, вы в основном делаете следующее:

[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 readonly, так как вам только захочется получить доступ к нему извне класса, никогда не устанавливайте его.

+1

Спасибо за быстрый ответ, он сразу решил проблему. Не могу поверить, что я этого не заметил, я смотрел на это в течение часа и начинал идти слепо. – lucasweb 2008-11-03 18:37:27

Смежные вопросы