我需要创建一个包含自定义单元格的表格,它具有不同的大小(高度)。 我可以从一个或两个单元格改变行的大小吗? 任何想法怎么??
由于
答案 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。