具有动态单元高度的UITableView

具有动态单元高度的UITableView,uitableview,cell,row-height,Uitableview,Cell,Row Height,只是一个简单的问题。 是否有一种简单的方法可以根据单元格中包含的文本动态设置单元格高度? 脚本: 包含两个部分的分组表视图。第一节和第二节包含来自数据库的文本(文本长度不同) 我查阅了一些教程和代码片段,但似乎没有任何东西对我有任何帮助(或者我太胖了,无法正确理解) 我希望你能给我一些建议,或者给我一个教程的链接,或者更好的一些编码想法 谢谢大家! 好的,下面是答案: (虽然还没有完成) 我有一个问题和它,并将感谢一些帮助,因为它是驾驶我疯狂! (我收到一条警告:控件到达非无效函数的末尾) 有人

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

我查阅了一些教程和代码片段,但似乎没有任何东西对我有任何帮助(或者我太胖了,无法正确理解)

我希望你能给我一些建议,或者给我一个教程的链接,或者更好的一些编码想法

谢谢大家!

好的,下面是答案: (虽然还没有完成) 我有一个问题和它,并将感谢一些帮助,因为它是驾驶我疯狂! (我收到一条警告:控件到达非无效函数的末尾)

有人能帮忙吗

这是密码

#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!!
好的,答案如下: (虽然还没有完成) 我有一个问题和它,并将感谢一些帮助,因为它是驾驶我疯狂! (我收到一条警告:控件到达非无效函数的末尾)

有人能帮忙吗

这是密码

#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!!

任何人有什么建议吗?有人吗?有什么建议吗?你会得到一个警告,因为你有两个if语句,其中包含返回,后面什么都没有。如果两个If语句由于任何原因都是假的,那么您将无法返回。您可以通过在最后一个}之前的方法底部放置一个返回来修复此警告,即使它只是返回0.0;您会收到一条警告,因为您有两条if语句,其中包含返回,后面什么也没有。如果两个If语句由于任何原因都是假的,那么您将无法返回。您可以通过在最后一个}之前的方法底部放置一个返回来修复此警告,即使它只是返回0.0;