我有一张桌子,当用户点击一个单元格时,一个详细信息单元会在该表的正下方下降。我已经弄清楚了如何使用insertRowAtIndexPath来实现这一点,但是细节单元格的行高比普通单元格的行高高。我已经尝试过heightForRowAtIndexPath,但它似乎仅在视图的初始加载时才被调用(或使用reloadData)。但是,我不希望将详细信息单元格添加到表视图的数据中,这消除了reloadData的可能性,因此也消除了heightForRowAtIndexPath。我确实有一个自定义的UITableViewCell子类,其子类为ItemDetailCell。我认为这可能会从情节提要中的关联单元加载指定的行高,但这似乎不起作用。这是我在cellForRowAtIndexPath中尝试的方法:

if (indexPath.row == _detailCellIndexPath.row && _detailCellIndexPath) {
    NSLog(@"detailCell");

    ItemDetailCell *detailCell = [tableView dequeueReusableCellWithIdentifier:DetailCellIdentifier forIndexPath:_detailCellIndexPath];

    //customize cell

    return detailCell;
}
else {
    CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

    //customize cell

    return cell;
}


我确实在控制台中得到了NSLog(@"detailCell")的返回,所以我知道它正在被调用,但是它仍然不能调整单元格的高度。

任何帮助是极大的赞赏!提前致谢。

最佳答案

heightForRowAtIndexPath也被称为

[self.tableView beginUpdates];
[self.tableView endUpdates];


有什么理由不想将单元格添加到支持集合中?最简单的解决方案是将特定项目添加到表视图支持数组中,然后在insertRowAtIndexPath beginUpdates块内调用endUpdates。这将触发标准的委托/数据源表视图方法(包括heightForRowAtIndexPath),因此您可以根据具体的UITableViewCell类(ItemDetailCellCustomCell)返回不同的大小。

关于ios - 使用insertRowAtIndexPath调整UITableViewCell高度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14225144/

10-09 21:50