iOS 5 UITableView中的序列更改 - viewForHeaderInSection和heightForHeaderInSection已切换

时间:2011-10-18 16:29:43

标签: uitableview ios5

哦,我是祸 - iOS 5破坏了我的应用程序。

我有一个UITableView,在iOS 5之前,代码在序列中被调用

  1. viewForHeaderInsection(允许我动态创建我的 标题视图)
  2. heightForHeaderInSection(允许我进入 提供headerView
  3. 的调整高度

    我刚刚检查并在iOS 4.3模拟器和iOS 5.0模拟器(以及iOS 5设备)中运行该程序,并且在iOS5中以相反的顺序调用完全相同的代码。为什么!!!!

    docs状态(对于tableView:heightForHeadInSection:)

    特别注意事项

    在iOS 5.0之前,对于tableView:viewForHeaderInSection:返回零视图的部分,表视图会自动将标题的高度调整为0。在iOS 5.0及更高版本中,您必须在此方法中返回每个节标题的实际高度。“

    它没有说明他们已经悄悄地改变了电话的顺序。

    我的问题:有没有人遇到过此问题,以及解决此问题的任何建议?我是否重新编码了一切?我需要一个可变高度标题,其高度我只能确定何时创建headerView。

2 个答案:

答案 0 :(得分:1)

是的,我观察到同样的行为。 您可以在tableView:heightForHeadInSection中创建标题视图,并在viewForHeaderInsection中重复使用,而不是创建两次。

在5.0之前,如果仅在构建视图后知道高度,则必须对heightForRowAtIndexPathcellForRowAtIndexPath执行类似的操作。

答案 1 :(得分:1)

只需添加以下内容即可修复它:

// iOS 5及更高版本在返回nil时仍然需要高度

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

// Do some check on if this section has a header
if ([navigationSections_[section] hasHeader]) {
    return 0;
} else {
    // This will use the default height
    return tableView.sectionHeaderHeight;
}

}