为两个自定义UITableViewCell设置不同的高度

时间:2015-02-26 21:27:14

标签: ios objective-c uitableview

我的表格视图中有两个自定义UITableViewCell,我无法正常调整大小。问题是在IB中,表视图有一个行高选项,它为两个单元设置相同的高度。我不能仅仅编辑IB中单元格的高度,为什么它不起作用,表格视图的行高会覆盖它。我使用的是静态高度,因此我尝试根据单元格的类型进行设置,但无法使其正常工作。是否有可能只是我的if语句错了或者我做错了什么?

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

  InboxCellTableViewCell *cellMessage = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];
  InboxCell2TableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell2" forIndexPath:indexPath];

    if(cell) {

        [cellMessage layoutIfNeeded];
        return 200;

    } else {
         [cell layoutIfNeeded];
         return 155;

    }
} 

1 个答案:

答案 0 :(得分:2)

你绝对可以这样做,你会在你怀疑的-heightForRowAtIndexPath中这样做。

您应该使用IndexPath来确定存在哪种类型的单元格,然后返回该单元格类型的正确高度,而不是尝试按原样加载单元格。

在你的cellForRowAtIndexPath方法中,你必须有一些逻辑已经确定给定IndexPath的单元格类型,因为你已经从该方法返回不同类型的Cell?可以使用相同的逻辑在heightForRowAtIndexPath方法中返回适当的高度。