设置UITableView单元格高度(包含动态UICollectionView)

时间:2018-06-23 18:12:02

标签: uitableview uicollectionview heightforrowatindexpath uicollectionviewdelegate

我的目标: 每个UITableView单元格包含1个UIColletionViewController(动态项目计数

问题::UITableView'HeightForRow的委托,是在UIColletionViewController完成加载其视图和高度之前调用的。

结果: UITableView'HeightForRow = 0

如何正确设置UITableView“ HeightForRow”委托? UIColletionViewController的内容高度尚未加载

enter image description here

  

结果应类似于以下绘制:

enter image description here

已尝试:

- (void)viewDidLoad {
    [super viewDidLoad];
    self.tableView.estimatedRowHeight = 300.0;
    self.tableView.rowHeight = UITableViewAutomaticDimension;
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {

   //not working well
    return UITableViewAutomaticDimension;

    //also tried this:
    ResultsTableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    Object * object = [_array objectAtIndex:indexPath.section];
    [cell setCellObject:object]; //this is build the cell ui
    return cell.collection.rect.size.height;
}

1 个答案:

答案 0 :(得分:1)

返回“内容大小” (而不是view.size)

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {

    //1. get the cell (by identifier)
    ResultsTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ResultsTableViewCell"];

    //2. build cell ui
    Object * object = [_array objectAtIndex:indexPath.section];
    [cell buildCell:object];

    //3. return content size
    return cell.collection.collectionView.contentSize.height;
}