奇怪的问题在UITableViewCell上绘制一个标签

时间:2010-11-02 02:56:21

标签: iphone objective-c

我使用了一个UINavigationController pushViewController来呈现一个ViewController,在viewcontroller的视图中,有一个UITablView。 我使用下面的代码在UITableViewCell上绘制UILabel,但它不显示,只有当我点击UIlabel所在的行时,它才会出现,如果我点击另一行,它会再次消失。

- (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;

            }
        }       
    }    

    cell.text=@"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];
            newLabelCell.text=@"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相同

欢迎任何评论

由于

InterDev中

1 个答案:

答案 0 :(得分:0)

尝试使用initWithStyle创建UITableViewCell ...

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

注意:不推荐使用initWithFrame,并且您正在使用CGRectZero作为框架