2011-06-29 118 views
0

我無法設置UILabel對象的屬性。無法設置UILabel屬性

下面的代碼是一個- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath方法:

UILabel *label = (UILabel *)[cell viewWithTag:0]; 
label.text = [self.comments objectAtIndex:indexPath.row*2]; 
label.textColor = [UIColor cyanColor]; 
label.adjustsFontSizeToFitWidth = YES; 

我得到的是在第四行運行時錯誤(奇怪的是,以前的行是行):

2011-06-29 11:23:57.641 Esker Monitor[94138:207] -[UITableViewCell setAdjustsFontSizeToFitWidth:]: unrecognized selector sent to instance 0x4e889e0 
2011-06-29 11:23:57.642 Esker Monitor[94138:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UITableViewCell setAdjustsFontSizeToFitWidth:]: unrecognized selector sent to instance 0x4e889e0' 

Similiar標籤屬性修改如label.numberOfLines = 1;label.minimumFontSize = 7.0;也會導致程序崩潰。

這裏有些微妙的東西我不明白嗎?

+1

它看起來像'viewWithTag:'正在返回一個'UITableViewCell'對象。前面的代碼行是可以的,因爲'text'和'textColor'也是'UITableViewCell'的(不推薦)屬性。 – albertamg

+0

我遵循[Apple's tutorial](http://goo.gl/qQhuY)。他們不會談論這個問題。有沒有辦法從'viewWithTag:'返回的UIView中獲取UILabel? –

+2

所有視圖都有一個0標籤作爲默認值,因此您可能需要使用不同的值。 – albertamg

回答

6

如果您要訪問的內置標準的UITableViewCell然後使用電池的爲textLabel屬性標籤:如果您的自定義標籤添加到單元格我建議使用一些非零標記它作爲

UILabel *label = cell.textLabel; 
... 

0是默認的標籤值,所以

[cell viewWithTag:0]; 

可以返回任何子視圖與0標記 - 沒有必要你的標籤。因此,爲您的標籤指定一些非零標籤,並將其添加到單元格的contentView中,而不是直接添加到單元格中 - 這有助於避免某些佈局問題,例如單元格進入編輯狀態時。稍後,您可以訪問該標籤的方式如下:

UILabel *label = (UILabel*)[cell.contentView viewWithTag:kSomeNonZeroTag]; 

文字和文字顏色的方法仍然工作的原因是的UITableViewCell來實現這種方法(它們都源自時候細胞沒有公開暴露其標籤和已被棄用自SDK 3.0以來)

+0

謝謝!的確,0是特殊的... –

0

您需要使用cell.textLabel來訪問標籤,現在,由於「label」本身引用了UITableViewCell,它會給出錯誤。

1

您正在製作具有不同對象的標籤(標籤0不適用於標籤的單元格)。檢查您爲UILabel標籤製作的對象, 它不是UILabel類型。它需要UITableViewCell類型。

這就是爲什麼它會導致崩潰。

2

其實[cell viewWithTag:0]返回UITableViewCell本身。所以,只是改變的UILabeltag別的東西,比如100,101等,

-2

你可以像下面這樣:

[cell.textLabel setFont:[UIFont fontWithName:@"Helvetica" size:14.0]]; 

[cell.textLabel setTextColor:[UIColor colorWithRed:222.0/255.0 green:221.0/255.0 blue:221.0/255.0 alpha:1.0]]; 

[cell.textLabel setBackgroundColor:[UIColor clearColor]]; 

您可以調整像這樣的任何財產。

如有任何困難,請告知我。

乾杯。

0

給你的子視圖適當的標籤,然後嘗試。或者如果想要設置表格視圖單元的默認標籤,那麼你應該使用單元格。textLable

0

在你TableViewCell類的頭,你應該創建

@property (nonatomic, retain) UILabel *textLabel;

在TableViewCell實現類,請確保您有@synthesize textLabel

而在cellForRowAtIndex,創建細胞從該TableViewCell類。你還可以用這個功能

MyCustomizedCell *cell = (MyCustomizedCell *)[tableView dequeueReusableCellWithIdentifier:(NSString *) myIndent];

等等獲得的細胞,可以使用每個對象TableViewCell容易的內側,

cell.textLabel.adjustsFontSizeToFitWidth = YES;

[cell.textLabel setAdjustsFontSizeToFitWidth:YES];