iOS中不同tableViews中单元格的高度

时间:2012-11-08 13:42:38

标签: iphone ios uitableview row-height

在我看来,我有三张不同的牌桌。对于前两个表,我有每个单元的固定高度(例如,对于第一个表的每个单元为30.0f,对于第二个表的每个单元为45.0f),我已根据每个表中的数据在故事板中进行了调整。对于第三个表,我希望每个单元格具有不同的高度。我尝试了这个方法

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

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

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

由于我对其他案件没有任何回报,整件事情都失败了。 有什么建议吗?

3 个答案:

答案 0 :(得分:2)

您需要为其他表格返回一个高度。

如果您在故事板中设置了高度,则可以像这样访问该高度:

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

    return tableView.rowHeight;
}

tableView.rowHeight将是您在故事板中设置的高度

答案 1 :(得分:1)

您应该让所有3个tableviews的视图控制器委托,并在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;
}

}

答案 2 :(得分:0)

使用tag属性怎么样?将每个表的标记设置为唯一编号,然后返回高度,如下所示:

- (CGFloat) tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    if (tableView.tag == 1)
    {
        return 150;
    }
    return 250;
}
相关问题