UITableView GridLayout可重用UITableViewCells的问题

时间:2013-02-13 21:04:09

标签: ios

我正在使用UITableView为iPad应用程序创建一个Grid(电子表格)布局。我得到网格部分工作,但由于我动态地将UILabel添加到单元格,可重用部分不能正常工作。这是代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"FundCell"];

    Fund *fund = [funds objectAtIndex:[indexPath row]];

    float labelWidth = 1024 / ([columnNames count] -1 );

    for(NSString *columnName in columnNames)
    {
        UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(x, 0, labelWidth, 44)];

        label.backgroundColor = [UIColor clearColor];

        label.text = [fund valueForKey:columnName];

        x += label.bounds.size.width;

        [cell addSubview:label];
    }

    x = 0;

    return cell;
}

结果:

enter image description here

1 个答案:

答案 0 :(得分:1)

您在每次重复使用时都会添加新标签。您应该只添加一次标签,存储对它们的引用(通常作为自定义单元子类的属性),然后只设置文本值。

您可能会发现在xib中定义自定义单元格并在其中放置标签更容易,从而创建出口。您可以将其注册以便重复使用该表,它将根据需要创建或出列单元格。