哦,我是祸 - iOS 5破坏了我的应用程序。
我有一个UITableView,在iOS 5之前,代码在序列中被调用
我刚刚检查并在iOS 4.3模拟器和iOS 5.0模拟器(以及iOS 5设备)中运行该程序,并且在iOS5中以相反的顺序调用完全相同的代码。为什么!!!!
docs状态(对于tableView:heightForHeadInSection:)
“特别注意事项
在iOS 5.0之前,对于tableView:viewForHeaderInSection:返回零视图的部分,表视图会自动将标题的高度调整为0。在iOS 5.0及更高版本中,您必须在此方法中返回每个节标题的实际高度。“
它没有说明他们已经悄悄地改变了电话的顺序。
我的问题:有没有人遇到过此问题,以及解决此问题的任何建议?我是否重新编码了一切?我需要一个可变高度标题,其高度我只能确定何时创建headerView。
答案 0 :(得分:1)
tableView:heightForHeadInSection
中创建标题视图,并在viewForHeaderInsection
中重复使用,而不是创建两次。
在5.0之前,如果仅在构建视图后知道高度,则必须对heightForRowAtIndexPath
和cellForRowAtIndexPath
执行类似的操作。
答案 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;
}
}