viewForHeaderInSection的框架总是大小相同

时间:2010-03-15 20:08:42

标签: iphone uitableview grouped-table

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
{

 if(section != 0) {

  UIView *view = [[[UIView alloc] initWithFrame:CGRectMake(10, 10, 100, 30)] autorelease];
  view.backgroundColor = [UIColor redColor];

  return view;

 } else {
  return tableView.tableHeaderView;
 }

}

这是我对viewForHeaderInSection的实现,但无论我做什么帧,它总是向我显示相同的红框。你看到我的代码有什么问题吗?

图片:

enter image description here

更新:

Mhm现在我的红色区块更高了,但是我的第一个tableHeader现在以某种方式被隐藏了。第一个是使用titleForHeaderInSection实现的。我以为我只是实现了tableHeader高度的高度但是没有用

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
if(section == 1)
    return 30;
else
    return tableView.tableHeaderView.frame.size.height;
}

1 个答案:

答案 0 :(得分:40)

您需要实现此委托方法

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

在您的情况下,您只需return 30;


此外,您正在泄漏view

[view release]发生在return之后。但是只要return发生,方法执行就会中止,而release永远不会被调用。

所以你想要这个

UIView *view = [[[UIView alloc] initWithFrame:CGRectMake(10, 10, 100, 30)] autorelease];

然后摆脱下面明确的release