создайте изменяемый массив, который содержит высоту всех ваших строк. Если у вас есть несколько разделов, вы можете поместить несколько массивов в изменяемый массив. допустим, у вас есть 2 раздела и 2 строки для каждого, а затем присвойте свой контроллер табличного представления:
@property (nonatomic, retain) NSMutableArray *heightData;
в файле .m:
- (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];
тогда табличное представление изменит размер строки с плавной анимацией, вы можете явно изменить размер и изменить расположение представлений внутри строки, но я не рекомендую, чтобы табличное представление автоматически сделало бы это для вас, если у вас есть ячейка custom-xib, и параметры автоматического изменения размера установлены правильно