2011-10-19 79 views

回答

8

你應該要採取兩種標籤,在單元格...在UITableViewCell中

的子視圖中的cellForRowAtIndexPath方法中添加這兩種標籤

寫這篇文章。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

    static NSString *CellIdentifier = @"Cell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 

    for(UIView *eachView in [cell subviews]) 
     [eachView removeFromSuperview]; 

    //Initialize Label 
    UILabel *lbl1 = [[UILabel alloc]initWithFrame:YOURFRAME]; 
    [lbl1 setFont:[UIFont fontWithName:@"FontName" size:12.0]]; 
    [lbl1 setTextColor:[UIColor grayColor]]; 
    lbl1.text = YOUR CELL TEXT; 
    [cell addSubview:lbl1]; 
    [lbl1 release]; 

    UILabel *lbl2 = [[UILabel alloc]initWithFrame:YOURFRAME]; 
    [lbl2 setFont:[UIFont fontWithName:@"FontName" size:12.0]]; 
    [lbl2 setTextColor:[UIColor blackColor]]; 
    lbl2.text = YOUR CELL TEXT; 
    [cel2 addSubview:lbl2]; 
    [lbl2 release]; 

    return cell; 
} 

UPDATE:

隨着這個你也可以創建自定義單元格的定義here

編碼快樂..

+0

'for(UIView * eachView in [cell subviews])[eachView removeFromSuperview];'太棒了。對於那個 –

+1

'for(UIView * eachView in [cell subviews] .copy)''是更安全的。另一種形式崩潰(或用於在以前的可可的崩潰)。 –

+0

cell.textlabel? – SampathKumar

4

唯一的方法是添加新的標籤作爲子視圖與不同的顏色作爲他們的背景。

0

要麼與自定義單元格一起按照需求進行初始化,要麼可以使用UITableviewCell,並根據需要的格式添加多個UILabel。

例如...,

static NSString *MyIdentifier [email protected]"MyIdentifier"; 
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier]; 

if (cell == nil) 
{  
    cell = [[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:MyIdentifier];  
} 

UILabel *lblPhone = [[UILabel alloc] initwithFrame:CGRectMake(5, 5, 150, 30)]; 
lblPhone.text = @"Tel."; 
[cell addSubView: lblPhone]; 
+0

您不應該將子視圖添加到單元格中,而是添加到單元格的內容視圖中,以便編輯時的行爲是合理的。此外,這將需要調整默認textLabel的框架,以便沒有重疊。 – jbat100

0

這是不能夠改變字體或顏色爲一個UILabel的部分。最簡單的方法是創建一個單元格子類,並添加兩個標籤或者界面構建器或代碼。 This post向您展示瞭如何計算標籤中文字的大小,以便您可以動態調整標籤的大小,如果您希望兩個標籤的文字「打扮」。

5

許多使用添加標籤作爲子視圖的技術該單元格,並且可能會遇到意外的結果,並重新使用這些單元格。 Apple已經提供了可以在各個方面進行定製的模板。你可以使用模板UITableViewCellStyleValue2,你可以使用現有的標籤和accessoryView,如cell.textLabel,cell.detailTextLabelcell.accessoryView,請參閱下面的代碼段,它或多或少的模擬你的界面:

- (UITableViewCell *)tableView:(UITableView *)tableView 
        cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 

    static NSString *CellID = @"Cell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellID]; 
    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue2 
     reuseIdentifier:CellIdentifier] autorelease]; 
    } 

     cell.textLabel.contentMode=UIViewContentModeScaleToFill; 
     cell.textLabel.lineBreakMode = UILineBreakModeWordWrap; 
     cell.textLabel.baselineAdjustment=UIBaselineAdjustmentAlignCenters; 
     cell.textLabel.textAlignment=UITextAlignmentCenter; 
     cell.textLabel.font=[UIFont boldSystemFontOfSize:22]; 
     cell.textLabel.textColor=[UIColor lightGrayColor]; 

     cell.detailTextLabel.contentMode=UIViewContentModeScaleToFill; 
     cell.detailTextLabel.lineBreakMode = UILineBreakModeWordWrap; 
     cell.detailTextLabel.baselineAdjustment=UIBaselineAdjustmentAlignCenters; 
     cell.detailTextLabel.textAlignment=UITextAlignmentLeft; 
     cell.detailTextLabel.font=[UIFont boldSystemFontOfSize:23]; 
     cell.detailTextLabel.textColor=[UIColor blackColor]; 

     [email protected]"Tel.:"; 
     [email protected]"+3912345678"; 

     UIImageView *imageView = [[UIImageView alloc] initWithImage: 
            [UIImage imageNamed:@"phone.png"]]; 
     cell.accessoryView = imageView; 
     [imageView release]; 
     return cell; 
} 

希望這會有所幫助。