tableView单元格上没有显示标签

时间:2012-06-29 08:01:12

标签: iphone objective-c uitableview ios5

我正在创建一个包含20行的TableView。我必须在偶数单元格中添加单个标签,我必须在奇数单元格中添加两个标签。当我添加所需的标签并滚动我的表格时,标签当我下楼帮助我时,我感到很失望。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    // UITableView *cell=[tableView ]
if (cell == nil)
{
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];


    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    if(indexPath.row%2==0)
    {
        UILabel *cellLabel=[[UILabel alloc]initWithFrame:CGRectMake(100, 40, 40, 40)]; 
        cellLabel.text=@"o1";
        [cell addSubview:cellLabel];
        [cellLabel release];
    }
    else
    {
        UILabel *cellLabel1=[[UILabel alloc]initWithFrame:CGRectMake(100, 40, 40, 40)]; 
        cellLabel1.text=@"e1";
        [cell addSubview:cellLabel1]; 
        [cellLabel1 release];
        UILabel *cellLabel2=[[UILabel alloc]initWithFrame:CGRectMake(150, 40, 40, 40)]; 
        cellLabel2.text=@"e2";
        [cell addSubview:cellLabel2]; 
        [cellLabel2 release];
    }

}

6 个答案:

答案 0 :(得分:1)

检查一下。这和你的代码一样,我只是改变了每个标签的Y位置,并且滚动工作正常。

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

{     static NSString * CellIdentifier = @“Cell”;

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
// UITableView *cell=[tableView ]
if (cell == nil)
{
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];


    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    if(indexPath.row%2==0)
    {
        UILabel *cellLabel=[[UILabel alloc]initWithFrame:CGRectMake(100, 10, 40, 40)]; 
        cellLabel.text=@"o1";
        [cell addSubview:cellLabel];

    }
    else
    {
        UILabel *cellLabel1=[[UILabel alloc]initWithFrame:CGRectMake(100, 10, 40, 40)]; 
        cellLabel1.text=@"e1";
        [cell addSubview:cellLabel1]; 

        UILabel *cellLabel2=[[UILabel alloc]initWithFrame:CGRectMake(150, 10, 40, 40)]; 
        cellLabel2.text=@"e2";
        [cell addSubview:cellLabel2]; 

    }

}
return cell;

}

答案 1 :(得分:0)

这样做:

 (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
    static NSString *CellIdentifier = @"Cell";



    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    // UITableView *cell=[tableView ]
    if (cell == nil)
    {
       cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];

    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

    UILabel *cellLabel=[[UILabel alloc]initWithFrame:CGRectMake(100, 40, 40, 40)]; 
        cellLabel.text=@"o1";
cellLabel.tag = 2;
        [cell addSubview:cellLabel];
        [cellLabel release];

        UILabel *cellLabel1=[[UILabel alloc]initWithFrame:CGRectMake(100, 40, 40, 40)]; 
        cellLabel1.text=@"e1";
cellLable1.tag = 3;
        [cell addSubview:cellLabel1]; 
        [cellLabel1 release];
        UILabel *cellLabel2=[[UILabel alloc]initWithFrame:CGRectMake(150, 40, 40, 40)]; 
        cellLabel2.text=@"e2";
cellLabel2.tag = 4;
        [cell addSubview:cellLabel2]; 
        [cellLabel2 release];
    }

UILabel *label1 = (UILabel *) [cell viewWithTag:2];
UILabel *label2 = (UILabel *) [cell viewWithTag:3];
UILabel *label3 = (UILabel *) [cell viewWithTag:4];

if (indexPath.row%2==0)
{
label1.hidden = FALSE;
label2.hidden = TRUE;
label3.hidden = TRUE:
}
else 
{
label1.hidden = TRUE;
label2.hidden = FALSE;
label3.hidden = FALSE;
}

    }

答案 2 :(得分:0)

这两种细胞是不同的,所以我会为每种细胞制作不同的细胞标识符。类似的东西:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *EvenCellIdentifier = @"EvenCell";
    static NSString *OddCellIdentifier = @"OddCell";
    NSString* cellIdentifier = (indexPath.row % 2) == 0 ? EvenCellIdentifier : OddCellIdentifier;

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
    if (cell == nil)
    {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier] autorelease];

        cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
        if(indexPath.row%2==0) 
        {
            UILabel *cellLabel=[[UILabel alloc]initWithFrame:CGRectMake(100, 40, 40, 40)]; 
            cellLabel.text=@"o1";
            [cell addSubview:cellLabel];
            [cellLabel release];
        }
        else
        {
            UILabel *cellLabel1=[[UILabel alloc]initWithFrame:CGRectMake(100, 40, 40, 40)]; 
            cellLabel1.text=@"e1";
            [cell addSubview:cellLabel1]; 
            [cellLabel1 release];
            UILabel *cellLabel2=[[UILabel alloc]initWithFrame:CGRectMake(150, 40, 40, 40)]; 
            cellLabel2.text=@"e2";
            [cell addSubview:cellLabel2]; 
            [cellLabel2 release];
        }
    }

    return cell;
}

答案 3 :(得分:0)

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *MyIdentifier = @"MyIdentifier";
    static NSString *MyIdentifier1 = @"MyIdentifier1";
    UITableViewCell *cell;
    if(indexPath.row % 2 != 0) 
    {
        cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
    }
    else
    {
        cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier1];
    }
    if(cell == nil) 
    {
        if(indexPath.row % 2 != 0)
        {
            cell=[self reuseTableViewCellWithIdentifier:MyIdentifier withIndexPath:indexPath];
        }
        else 
        {
            cell=[self reuseTableViewCellWithIdentifier:MyIdentifier1 withIndexPath:indexPath];
        }
    }
    cell.selectionStyle = UITableViewCellSelectionStyleNone;
    return cell;
}
-(UITableViewCell *)reuseTableViewCellWithIdentifier:(NSString *)identifier withIndexPath:(NSIndexPath *)indexPath 
{
    UITableViewCell *cell=[[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault  reuseIdentifier:identifier]autorelease];
    if([identifier isEqualToString:@"MyIdentifier"]) 
    {

        UILabel *l1=[[[UILabel alloc]initWithFrame:CGRectMake(5, 5, 30, 20)]autorelease];
        l1.backgroundColor=[UIColor redColor];
        [cell.contentView addSubview:l1];
        UILabel *l2=[[[UILabel alloc]initWithFrame:CGRectMake(65, 5, 30, 20)]autorelease];
        l2.backgroundColor=[UIColor grayColor];
        [cell.contentView addSubview:l2];       
    }
    else 
    {
        UILabel *l1=[[[UILabel alloc]initWithFrame:CGRectMake(5, 5, 30, 20)]autorelease];
        l1.backgroundColor=[UIColor blueColor];
        [cell.contentView addSubview:l1];
    }
    return cell;
}

答案 4 :(得分:0)

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{
   if(indexPath.row%2==0)
   {
    static NSString *CellIdentifier = @"CustomCell";

    CustomCell *cell = (CustomCell *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil)
    {
        NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];
        for (id currentObject in topLevelObjects)
        {
            if ([currentObject isKindOfClass:[UITableViewCell class]])
            {
                cell =  (CustomCell *) currentObject;
                break;
            }
        }
    }
    cell.capitalLabel.text =[capitals objectAtIndex:indexPath.row];
    cell.stateLabel.text = [states objectAtIndex:indexPath.row];
    cell.t1.delegate=self;
    cell.t1.tag=indexPath.row;
    cell.t1.text=[arrTemp objectAtIndex:indexPath.row];
    cell.s1.backgroundColor=[UIColor grayColor];
    cell.s1.contentSize=CGSizeMake(1000, 40);
    return cell;
   }
    else
    {
        static NSString *CellIdentifier1 = @"CustomCell1";

        CustomCell1 *cell1 = (CustomCell1 *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier1];
        if (cell1 == nil)
        {
            NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell1" owner:self options:nil];
            for (id currentObject in topLevelObjects)
            {
                if ([currentObject isKindOfClass:[UITableViewCell class]])
                {
                    cell1 =  (CustomCell1 *) currentObject;
                    break;
                }
            }
        }
        cell1.l1.text=@"alok";
        return cell1;

    }

}

答案 5 :(得分:0)

      static NSString *CellIdentifier = @"Cell";
  static NSString *CellIdentifierButton = @"CellButton";
   UITableViewCell *cell = nil;




      if (indexPath.section <=2) 
      {
        if(indexPath.section==2&&indexPath.row==4)
        {
            cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifierButton]; 

        }
        else
        {
            cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
        }
     }   
    if (cell == nil)
    {   
        if (indexPath.section <=2)
        {
            if(indexPath.section==2&&indexPath.row==4)
            {
                cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifierButton];
                UIButton *b1 = [[UIButton alloc]initWithFrame:CGRectMake(200, 10, 300, 80)];
                [b1 setBackgroundColor:[UIColor redColor]];
                [b1 setTag:501];           
                [cell.contentView b1];

                UIButton * b2 = [[UIButton alloc]initWithFrame:CGRectMake(200, 120, 300, 80)];
                [b2 setBackgroundColor:[UIColor redColor]];
                [b2 setTag:502];           
                [cell.contentView b2];

            }
            else
            {
                cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
                UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(10, 0, 250, 44)];
                [label setBackgroundColor:[UIColor clearColor]];
                [label setTag:500];           
                [cell.contentView addSubview:label];

                //end for section 1

                //for section2



                }
                //end for section 2

            }


        }
    }




    //====setting the values===//
    if (indexPath.section ==0) 
    {
        UILabel *label = (UILabel *)[cell.contentView viewWithTag:500];
        if (label) {
            [label setText:[arr1 objectAtIndex:indexPath.row]];
        }
    }
    if (indexPath.section ==1) 
    {
        UILabel *label = (UILabel *)[cell.contentView viewWithTag:500];
        if (label) {
            [label setText:[arr2 objectAtIndex:indexPath.row]];
        }
    }