我创建了一个UITableView
包含自定义部分标题视图。现在,我希望它在最上面的当前可见部分显示更多数据。我计划使用该事件scrollViewDidEndDecelerating
来更新节标题。目前,问题是我无法为特定节号设置节标题高度。
我确实尝试过使用heightForHeaderInSection
,但应用程序只是崩溃并显示以下输出:
'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 0 beyond bounds for empty array'
我正在使用代码:
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
if (tableView == self.tableView)
{
NSArray *visibleCells = [self.tableView visibleCells];
NSMutableArray *visibleSections = [[NSMutableArray alloc] init];
for (NSInteger index = 0; index < [visibleCells count]; index++)
{
UITableViewCell *currentCell = [visibleCells objectAtIndex:index];
NSIndexPath *currentPath = (NSIndexPath *)[self.tableView indexPathForCell:currentCell];
if (![visibleSections containsObject:[NSNumber numberWithInt:currentPath.section]])
{
[visibleSections addObject:[NSNumber numberWithInt:currentPath.section]];
NSLog([NSString stringWithFormat:@"%ld", (long)[visibleSections count]]);
[visibleSections sortedArrayUsingDescriptors:[NSArray arrayWithObject:[[NSSortDescriptor alloc] initWithKey:nil ascending:YES]]];
}
}
if (visibleSections == nil)
{
return 42.0;
}
else if ([[visibleSections objectAtIndex:0] integerValue] == section)
{
return 58.0;
}
else
{
return 42.0;
}
}
}
我无法完全弄清楚我的heightForHeaderInSection
方法出了什么问题,但我知道它与NSMutableArray
, visibleSections 有关。
关于如何更改外部特定部分标题视图的高度heightForHeaderInSection
和/或如何修复上面的代码的任何提示或答案将非常有帮助。
编辑:
只是为了让我的崩溃问题的解决方案更清楚一点,if (visibleSections == nil)
不应该用来代替if ([visibleSections count] < 1)
or if ([visibleSections count] == 0)
。