0

我正在为 UITableView 中的部分标题使用自定义标题视图。这里有几个 dataSource 方法:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
    SBTableViewHeader *header = [[SBTableViewHeader alloc] init];
    header.titleLabel.text = self.earnings;
    header.subtitleLabel.text = @"You have earned $23 today.";
    return header;
}

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
    return 90;
}

我知道我的标题视图应该是 90 点高,但是我得到了 90 点的标题视图加上另外 90 个空白点,它们覆盖了一些单元格。总共 180 个,在 Photoshop 中测量。

帮助!

更多信息:SBTableViewHeader 是 UIView 子类,使用 .xib。那里没什么特别的。文件的所有者设置为 SBTableViewHeader,其他所有内容似乎都已正确连接。

4

1 回答 1

1

(来自评论:)

您必须使用initWithFrame而不是init创建具有正确大小的视图。

heightForHeaderInSection:(和类似heightForRowAtIndexPath的)表视图仅用于计算标题和单元格位置、滚动指示器的大小等。

数据源(或委托)方法必须返回正确大小的单元格/视图,否则它们将与其他项目重叠。

于 2013-02-06T18:05:04.657 回答