Ios 自定义UITableView节标题,怪异行为

Ios 自定义UITableView节标题,怪异行为,ios,objective-c,uitableview,Ios,Objective C,Uitableview,我在UITableView中为节标题使用自定义标题视图。以下是两种数据源方法: - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { SBTableViewHeader *header = [[SBTableViewHeader alloc] init]; header.titleLabel.text = self.earnings; heade

我在UITableView中为节标题使用自定义标题视图。以下是两种数据源方法:

- (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个空白点,这覆盖了一些单元格。用Photoshop测得总共180

救命啊

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

(来自注释:)

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

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


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

检查xib文件中视图的高度。它也应该是90分。您是否检查过
[[SBTableViewHeader alloc]init]
是否返回高度为90的视图?我检查过了,它是90。@MartinR这就是问题所在!它返回了一个框架和边界高度为0的视图,因此解决方案是使用initWithFrame:而不是init:。。。请随意发布答案,这样我就可以接受。@NikolayDyankov:。。。。完成。