0

在我看来,我有三个不同的表。对于前两个表格,我为每个单元格设置了一个固定高度(例如,第一个表格的每个单元格为 30.0f,第二个表格的每个单元格为 45.0f),我已根据每个表格中的数据在情节提要中进行了调整。对于第三张表,我希望每个单元格有不同的高度。我试过方法

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

但是这种技术的问题是每个表都调用了这个方法。至于前两张表,我已经调整了情节提要中的高度,我不知道如何处理它们。如果我这样做:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
if(tableView == myTable) {
    return 150.0;
}
}

由于其他情况我没有任何回报,所以整个事情都失败了。有什么建议吗?

4

3 回答 3

2

您需要返回其他表格的高度。

如果您在情节提要中设置了高度,则可以像这样访问该高度:

-(CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (tableView == myTable)
        return 150.0;

    return tableView.rowHeight;
}

tableView.rowHeight 将是您在情节提要中设置的高度

于 2012-11-13T01:17:46.117 回答
1

您应该让您的视图控制器委托所有 3 个表视图,并在 heightForRowAtIndexPath 检查哪个表调用了该方法:

所以在 viewDidLoad 添加:

myTable1.delegate = self;
myTable2.delegate = self;
myTable3.delegate = self;

进而:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath     *)indexPath {
if(tableView == myTable1) {
return 150.0;
}
else if(tableView == myTable2) {
return 75.0;
}
else if(tableView == myTable3) {
return 75.0;
}

}
于 2012-11-08T13:52:06.130 回答
0

如何使用标签属性?将每个表的标签设置为唯一的数字,然后返回高度,如下所示:

- (CGFloat) tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    if (tableView.tag == 1)
    {
        return 150;
    }
    return 250;
}
于 2012-11-13T04:12:38.577 回答