【问题标题】:UITableView with dynamic cell heights具有动态单元格高度的 UITableView
【发布时间】:2010-07-02 05:26:17
【问题描述】:

只是一个简单的问题。 是否有一种简单的方法可以根据单元格中包含的文本动态设置单元格高度? 设想: 包含两个部分的分组表视图。第一和第二部分包含来自数据库的文本(具有不同长度的文本)。

我查看了一些教程和代码 sn-ps,但似乎对我没有任何帮助(或者我太厚而无法正确使用)。

我将不胜感激一些建议或教程链接,甚至更好的一些编码想法!

谢谢!

【问题讨论】:

  • 有人吗?有什么建议吗?

标签: uitableview cell row-height


【解决方案1】:

好的,答案如下: (虽然还没有完成) 我有一个问题,希望能得到一些帮助,因为它让我发疯! (我得到一个警告:控制到达非无效函数的结尾)

有人可以帮忙吗?

这是代码!

#pragma mark -
#pragma mark UITableViewDelegate methods
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {



    UITableViewCell *cell = [self newOrReusableCell];

    if (indexPath.section == A_SECTION) {

    NSUInteger row = indexPath.row;
    NSString *text = [_centerArray objectAtIndex:row];
    UILineBreakMode lineBreakMode = cell.textLabel.lineBreakMode;

    CGFloat width = _tableView.contentSize.width - (kTableCellHPadding*2 + tableCellMargin*2);
    UIFont* font = cell.textLabel.font;
    CGSize size = [text sizeWithFont:font
                   constrainedToSize:CGSizeMake(width, CGFLOAT_MAX)
                       lineBreakMode:lineBreakMode];

    if (size.height > kMaxLabelHeight) {
        size.height = kMaxLabelHeight;
    }

        return size.height + kTableCellVPadding*2;
}


    if (indexPath.section == B_SECTION) {

        NSUInteger row = indexPath.row;
        NSString *text = [_leftArray objectAtIndex:row];
        UILineBreakMode lineBreakMode = cell.textLabel.lineBreakMode;

        CGFloat width = _tableView.contentSize.width - (kTableCellHPadding*2 + tableCellMargin*2);
        UIFont* font = cell.textLabel.font;
        CGSize size = [text sizeWithFont:font
                       constrainedToSize:CGSizeMake(width, CGFLOAT_MAX)
                           lineBreakMode:lineBreakMode];

        if (size.height > kMaxLabelHeight) {
            size.height = kMaxLabelHeight;
        }

    return size.height + kTableCellVPadding*2;  
}
}//i get the WARNING here!!

【讨论】:

  • 您会收到一条警告,因为您有 2 个带有返回的 if 语句,之后什么也没有。如果两个 if 语句出于任何原因都是错误的,那么您将没有回报。您可以通过在最后一个 } 之前的方法底部放置一个 return 来修复此警告,即使它只是 return 0.0;
猜你喜欢
  • 2016-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-06
  • 1970-01-01
  • 2019-08-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多