2011-04-21 37 views
1

當我要設置屬於表格單元格的標籤文本時,我的應用程序崩潰。我的代碼片段如下:將文本設置爲自定義表格單元格標籤時發生崩潰

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier]; 

if (cell == nil) 
{ 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:simpleTableIdentifier]; 
    [cell autorelease]; 

    CGRect splitMethodLabelRect = CGRectMake(160, 6, 50, 30); 
    UILabel *splitMethodLabel = [[UILabel alloc] initWithFrame:splitMethodLabelRect]; 
    splitMethodLabel.textAlignment = UITextAlignmentLeft; 
    splitMethodLabel.font = [UIFont systemFontOfSize:13]; 
    splitMethodLabel.tag = kSplitMethodTag; 
    [cell.contentView addSubview: splitMethodLabel]; 
    [splitMethodLabel release]; 

} 

UILabel *splitMethodName = (UILabel *)[cell.contentView viewWithTag:kSplitMethodTag]; 

//app crashes at this point 
splitMethodName.text = @"Test"; 

這個問題似乎是在我設置文本的時候。下面 堆棧跟蹤:

2011-04-21 15:11:10.820 BillSplitter[3021:707] -[UITableViewCellContentView setText:]: unrecognized selector sent to instance 0x18a680 
2011-04-21 15:11:10.829 BillSplitter[3021:707] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UITableViewCellContentView setText:]: unrecognized selector sent to instance 0x18a680' 

在這個任何建議,非常感謝!

+0

它總是一個好主意張貼stacktrace :) – 2011-04-21 07:48:34

+0

感謝您的建議! – Zhen 2011-04-21 07:55:27

+1

@ Zhen:將*標記*值更改爲其他內容並檢查它是否仍然崩潰。 – EmptyStack 2011-04-21 08:01:09

回答

6

看來你已經設置爲splitMethodLabel標籤值可能會造成問題。
Just change the tag value to something else and check if it crashes still.

2

阿的問題是:您要添加您自己的標籤對小區的子視圖,但沒有給出一個屬性,它引用splitMethodName。該標籤位於單元的視圖層次結構中,但您沒有引用來訪問它。

您可以通過繼承UITableViewCell並將您的標籤添加爲屬性來解決此問題。然後使用你的自定義類。覆蓋initWithStyle,將參數傳遞給super,然後創建標籤,添加爲子視圖並分配給您的屬性。

相關問題