如何在UITableViewController的不同部分中为每一行指定高度?

时间:2012-08-16 09:43:54

标签: objective-c ios xcode uitabbarcontroller

我有一个UITableViewController,它有不同的部分和行,我以编程方式创建它们,我希望每个部分都有特定的高度

请您告诉我如何为每一部分提供特定的高度?

提前致谢!

正如你所看到的,因为我使用了heightForRowAtIndexPath:我的部分中的每一行都有相同的高度,但我希望每个部分都有特定的高度

![在此输入图片说明] [2]

我知道我们有 heightForHeaderInSection heightForFooterInSection ,但我如何在一个表格中为多个部分添加特定的高度

以下是代码:

修改

如果我使用此代码,那么我的部分之间有很大的空间,但我希望在不同部分的每一行都有特定的高度

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
switch (section) {
    case 0:
        return 40;
        break;
    case 1:
        return 40;
        break;
    case 2:
        return 80;
        break;
    default:
        return 40;
        break;
}
}

2 个答案:

答案 0 :(得分:2)

根据

部分为不同的案件返回不同的高度
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    switch (indexPath.section) {
        case 0:
            return your_req_height;
            break;            
        default:
            break;
    }
}

NSIndexPath同时提供行和部分,因此您可以为部分中的每一行返回不同的高度。

应该补充一点,这个方法看起来很脆弱,因为你要将一个特定的部分/行对绑定到一个固定的高度。您应该使用标记设置表项,指示每个部分/行对中的内容类型。

答案 1 :(得分:1)

您需要添加此代码。这将返回CheckBoxCompensationViewCell类型单元格的自定义高度。只需用CheckBoxCompensationViewCell的高度替换your_required_height即可。我试过60.

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

switch (indexPath.section) {

//Since you have custom cells i-e CheckBoxCompensationViewCell type cells in this section, you need to return custom cell height in tableview
case 2:
    return 60; //i am supposing your_required_height is 60
    //return your_required_height; //height of CheckBoxCompensationViewCell
    break;

default:
    return 44; //default_height of tableview cell
    break;
    }
}