行的大小与其他行的大小不同

时间:2011-08-21 00:50:43

标签: iphone ios ipad uitableview

我需要创建一个包含自定义单元格的表格,它具有不同的大小(高度)。 我可以从一个或两个单元格改变行的大小吗? 任何想法怎么??

由于

2 个答案:

答案 0 :(得分:2)

创建一个包含所有行高度的可变数组,如果你有多个部分,可以将多个数组放在一个可变数组中。假设你有两个部分,每部分有两行,然后给你的表视图控制器一个属性:

@property (nonatomic, retain) NSMutableArray *heightData;
<。>文件中的

- (NSMutableArray *)heightData
{
    if(nil == heightData)
    {
        heightData = [[NSMutableArray array] retain];

        //various heights for your different rows in different sections:
        NSMutableArray *sectionArray1 = [NSMutableArray arrayWithObjects:[NSNumber numberWithFloat:44],[NSNumber numberWithFloat:44]];
        NSMutableArray *sectionArray2 = [NSMutableArray arrayWithObjects:[NSNumber numberWithFloat:44],[NSNumber numberWithFloat:44]];

        [heightData addObject:sectionArray1];
        [heightData addObject:sectionArray2];
    }

    return heightData;
}

然后,在你的表视图控制器.m文件中,有一个我们必须使用的协议方法,你可以像这样实现它:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSMutableArray *rowArray = [self.heightData objectAtIndex:indexPath.section];
    NSNumber *height = [rowArray objectAtIndex:indexPath.row];
    return [height floatValue];
}

最后一步:当你想要改变一行的高度时,让我们说它是第1部分第0行的行,那么你可以这样做:

NSMutableArray *rowArray = [self.heightData objectAtIndex:1];
[rowArray replaceObjectAtIndex:0 withObject:[NSNumber numberWithFloat:55]];\\a new data
[self.tableView beginUpdates];
[self.tableView endUpdates];

然后表视图将使用平滑动画调整行的大小,您可以显式调整行内部视图的大小并重新布局,但我不建议这样,表视图会自动为您执行此操作你有一个自定义xib单元格并且正确设置了自动调整设置

答案 1 :(得分:1)

使用UITableViewDelegate协议中的heightForRowAtIndexPath