我創建了一個UITableView
,其中包含自定義部分標題視圖。現在,我希望它在最上面的當前可見部分顯示更多的數據。我打算使用事件scrollViewDidEndDecelerating
更新節標題。目前,問題是我無法爲特定節號設置節標題高度。調整tableview的第一個可見部分標題高度
我曾嘗試使用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)
或if ([visibleSections count] == 0)
使用。
是什麼您登錄的[visibleSection計數]說明了什麼? – rdelmar 2013-04-06 16:59:17
@rdelmar它只是將日誌編輯爲第6行之後,並輸出零。我猜測即使應用程序沒有顯示內容,代碼也會啓動。 – 2013-04-06 17:04:01
@rdelmar但我很困惑,爲什麼它甚至會輸出錯誤,當它甚至不會被使用,如果它是空的。 – 2013-04-06 17:07:26