在我看来,我有三张不同的牌桌。对于前两个表,我有每个单元的固定高度(例如,对于第一个表的每个单元为30.0f,对于第二个表的每个单元为45.0f),我已根据每个表中的数据在故事板中进行了调整。对于第三个表,我希望每个单元格具有不同的高度。我尝试了这个方法
(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
但是这种技术的问题是为每个表调用此方法。至于前两张表,我已经在故事板中调整了高度,我不知道如何处理它们。如果我这样做:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
if(tableView == myTable) {
return 150.0;
}
}
由于我对其他案件没有任何回报,整件事情都失败了。 有什么建议吗?
答案 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;
}