表格单元格中的多个标签... iphone

时间:2011-10-24 12:41:50

标签: iphone ios

我是iphone App的新程序员...我在桌面视图的第一个单元格中有7个标签和1个imageView ......

我为此编写了这段代码.....这项工作令人满意......(滚动时可能需要时间)

请告诉我......这是完成这项任务的正确方法......?

如果没有请...告诉我..正确的方式......

提前致谢

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

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:[NSString stringWithFormat:@"Cell %i",indexPath.section]];

if (cell == nil) {

    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:[NSString stringWithFormat:@"Cell %i",indexPath.section]] autorelease];

}


if(indexPath.row==0)
{


            CGRect frame=CGRectMake(120,10, 80, 40);

            UILabel *label1=[[UILabel alloc]init];

            label1.frame=frame;

    label1.text=@"first label";

    [cell.contentView addSubview:label1];

            [label1 release];




    CGRect frame2=CGRectMake(200,10, 80, 40);

            UILabel *label2=[[UILabel alloc]init];

            label2.frame=frame2;

    label2.text=@"second label";

    [cell.contentView addSubview:label2];

            [label2 release];


    and so on.......


}
    else if(indexPath.row==1)
    {
       //add four labels for this cell here......
    }


return cell;
}

2 个答案:

答案 0 :(得分:3)

当您重复使用单元格时,您不需要第二次创建标签:

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

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:[NSString stringWithFormat:@"Cell %i",indexPath.section]];

    if (cell == nil) {

        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:[NSString stringWithFormat:@"Cell %i",indexPath.section]] autorelease];

        if(indexPath.row==0)
        {
            CGRect frame=CGRectMake(120,10, 80, 40);
            UILabel *label1=[[UILabel alloc]init];            
            label1.frame=frame;
            label1.text=@"first label";
            label1.tag = 1001;
            [cell.contentView addSubview:label1];
            [label1 release];

            CGRect frame2=CGRectMake(200,10, 80, 40);
            UILabel *label2=[[UILabel alloc]init];
            label2.frame=frame2;
            label2.text=@"second label";
            label2.tag = 1002;
            [cell.contentView addSubview:label2];
            [label2 release];

            and so on.......
        }
    }


    if(indexPath.row==0)
    {
        UILabel *label1=[cell viewWithTag:1001];
        label1.text=@"first label";

        UILabel *label2=[cell viewWithTag:1002];
        label2.text=@"second label";

        and so on.......
    }


    return cell;
}

我正在使用tag值访问以前创建的标签。

答案 1 :(得分:0)

我认为,在InterfaceBuilder中设计如此复杂的单元会容易得多。如果您正在使用Storyboard,则可以在表格视图中立即设计自定义单元格。如果您正在使用xib,则可以创建一个nib,它将具有自定义UITableViewCell而不是表视图,UIViewController作为所有者,并在项目中声明UITableViewCell的子类。这应该让你的痛苦更容易=)