2008-11-03 79 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?這對我來說看起來就是你傳遞了一個零對象。當您創建單元格時,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]; 

那麼這應該工作。

此外,作爲一種風格的筆記,我只會將noteTextLabel作爲只讀property,因爲您只想從課程外部訪問它,從未設置它。

+1

感謝您的快速響應,它立即解決了問題。我不能相信我沒有發現這一點,我一直在盯着這個小時,並開始密碼盲。 – lucasweb 2008-11-03 18:37:27