0

要指定表格视图的单元格高度,我们使用委托方法,

- (CGFloat) tableView:(UITableView*)tableView heightForHeaderInSection:(NSInteger)section

但是这种方法会询问每一行的单元格高度,如果我希望其中一些是默认值,我该怎么办?

对于单元格高度,我们可能会UITableView#rowHeight为委托方法内的那些默认行返回,但我还希望自定义部分(不是全部)部分标题/单元格

但是我无法从表格视图中获取默认值,尤其是对于分组样式的表格视图,有人有解决方案吗?

谢谢!

编辑:我很抱歉没有说得很清楚。事实上,单元格高度不是我想要部分自定义的唯一一个,还有像节标题这样的其他东西(可能还有更多,比如删除按钮样式等)。

有没有不模仿默认行为的解决方案?

4

3 回答 3

1

单元格的默认高度是 44 .. 所以当您的条件不满足时,您可以返回它..

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

      if (YOUR_SPECIFIC_CONDITION) {  
     return 180.0;
     }
     return 44.0; 
 }

愿这对你有帮助..

于 2012-07-04T11:13:38.160 回答
1

如果您不想在所有情况下都使用默认行为,那么您仍然必须在非特殊情况下模仿默认行为。

对于标头,您仍然必须实施

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section;

在其中,您必须回答您不想更改的标题的默认高度,以及您想要更改的专用标题高度。

同样,在

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath*);

您仍然必须模仿那些您不想更改的单元格的默认行为。

如果需要,您可以使用情节提要完成所有这些操作:为每个单元创建具有唯一标识符的专用单元,然后返回与它们相关的单元高度。如果您采用这条路线,那么您可能只需使用 dequeueReuaableCellWithIdentifier 并使用该标识符的高度值即可逃脱。只需使用一个唯一的单元格标识符,其高度适合您正在考虑的每个单元格。

于 2012-07-14T02:01:02.207 回答
0
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{
    if (indexPath.row == 0 && indexPath.section==0) 
    {  
        return 180.0;
    }
    else
    {
        return 44.0;
    }
}
于 2012-07-04T10:53:39.170 回答