2012-12-19 89 views
1

我提供了一個子類UITableViewCellMyCell出口性質(以掛鉤筆尖):訪問的UITableViewCell子類出口屬性

@interface MyCell : UITableViewCell 

@property (nonatomic, strong) IBOutlet UILabel* theLabel; 

@end 

我然後合成theLabel。 然後我想使用的屬性名接入小區:

MyCell *theCell = (MyCell *)cell; 
UILabel *lab = theCell.theLabel; 

當我使用屬性名來訪問我收到錯誤消息的小區:

[UITableViewCell theLabel]: unrecognized selector

我似乎遺漏了什麼。爲什麼會拋出異常?

+1

顯然,'cell'的類型是'的UITableViewCell *',而不是'了myCell *'。即,它實際上不是您的自定義類的實例,而只是「UITableViewCell」的一個實例。 – 2012-12-19 21:14:04

+0

您是以故事板還是xib文件或編程方式創建單元格? – daegren

+0

在xib文件中創建單元格。 – Pete

回答

2

你的問題是,你的cellForRowAtIndexPath函數中你沒有正確實例化細胞的「了myCell」型,而是隻是想靜投指針。最後你試圖訪問一個普通的UITableViewCell中不存在的屬性。

你加載類似於這樣你的?:

static NSString *reuseIdentifier = @"Cell"; 

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:reuseIdentifier]; 

if (cell == nil) { 
    cell = [[[NSBundle mainBundle] loadNibNamed:@"MyCell" owner:self options:nil] objectAtIndex:0]; 
} 
+0

我加載這樣的細胞:'[self.tableView registerNib:[UINib nibWithNibName:@ 「了myCell」 束:無] forCellReuseIdentifier:CellIdentifier]; MyCell * cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; ' – Pete

+0

你爲什麼在原始代碼中顯示一個陣容?也許試試這個:如果([單元isKindOf:[了myCell類]){的NSLog(@「我是正確的細胞類型」;},看看你在這一點上正確輸入如果失敗,那麼它必須要做些什麼您的設置。 – rooster117

+0

感謝您的想法。你是正確的,我不輸入正確。所以我實例錯誤,只是靜態鑄造的指針。我怎樣才能設置是否正確? – Pete