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)
if ([visibleSections count] == 0)