2010-11-02 3 views
0

Я использовал UINavigationController pushViewController для представления ViewController, на представлении viewcontroller есть UITablView. Я использовал коды ниже, чтобы нарисовать UILabel на UITableViewCell, но он не отображается, только когда я нажимаю строку, где находится UIlabel, она появится, если я коснусь другой строки, она снова исчезнет.странная проблема нарисовать метку на UITableViewCell

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

      static NSString *SimpleTableIdentifier1 = @"CellTableIdentifier"; 
    UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier: SimpleTableIdentifier1 ]; 
    if (cell == nil) 
    { 
     cell=[[[UITableViewCell alloc] initWithFrame:CGRectZero  
               reuseIdentifier:SimpleTableIdentifier1] autorelease]; 
     switch([[myArray objectAtIndex:indexPath.row] getValueType]) 
     { 
      case _PSToggleSwitchSpecifier: 

      {   
       UISwitch *switchview=[[UISwitch alloc]init]; 

       switchview.tag=11106 ; 
       cell.accessoryView= switchview; 
       //switchview.frame=CGRectMake(80.9f,15.0f,80.0f,23.0f) ; 
       //[cell.contentView addSubview:switchview]; 
       [switchview addTarget:self action:@selector(switchValueChanged:) forControlEvents:UIControlEventValueChanged]; 

       [switchview release]; 
       break; 
      } 
      case _PSMultiValueSpecifier: 
      { 
       cell.accessoryType= UITableViewCellAccessoryDisclosureIndicator;// 

       //draw a label, but actually it does display, 
       UILabel *labelCell =[ [UILabel alloc]init]; 
       [labelCell setTag:11101]; 
       labelCell.frame = CGRectMake(80.9f,15.0f,80.0f,23.0f) ; 
       [labelCell setBackgroundColor:[UIColor clearColor]]; 
       labelCell.textAlignment=UITextAlignmentRight; 
       [labelCell setFont:[UIFont systemFontOfSize:18.0]]; 
       [labelCell setTextColor:[UIColor blackColor]]; 
       [cell.contentView addSubview:labelCell]; 
       [labelCell release]; 

       break; 

      } 
     }  
    }  

    [email protected]"test"; 

    switch([[myArray objectAtIndex:indexPath.row] getValueType]) 
    { 

     case _PSToggleSwitchSpecifier: 
     { 
      cell.accessoryType=UITableViewCellAccessoryNone;// 

      UISwitch *tem=(UISwitch*) [cell.contentView viewWithTag:11106];//cell.accessoryView;// 
      tem.on= true; 
      break; 

     } 
     case _PSMultiValueSpecifier: 
     { 
      UILabel *newLabelCell=(UILabel*)[cell.contentView viewWithTag: 11101];//intV]; 
      [email protected]"Items";//it should display, but actually not, only when I tap the row "didselect" the text display 
      break; 

     } 
    }; 

    return cell; 
} 

В кодах выше UISwitch отображаются, но если я использую коды

switchview.frame=CGRectMake(80.9f,15.0f,80.0f,23.0f) ; 
[switchview addTarget:self action:@selector(switchValueChanged:) forControlEvents:UIControlEventValueChanged]; 

[cell.contentView addSubview:switchview]; 

заменить cell.accessoryView= switchview;

UISwitch будет то же самое, как UILabel

Добро пожаловать любой комментарий

Thanks

InterDev

ответ

0

Попробуйте использовать initWithStyle создать UITableViewCell ...

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier 

Примечание: initWithFrame осуждается, и вы используете CGRectZero для кадра

Смежные вопросы