我的应用程序中集成了一个表格视图。代码是这样的
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return [sortedDates count];
}
- (nullable UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
EventHeaderView *headerView = (EventHeaderView *)[tableView dequeueReusableHeaderFooterViewWithIdentifier:@"eventHeader"];
if(headerView == nil) {
headerView = [[EventHeaderView alloc] initWithReuseIdentifier:@"eventHeader"];
}
NSString *date = [sortedDates objectAtIndex:section]; **// app crashes here**
NSString *formatHeaderStr = [NSDate stringFromDate:[NSDate dateFromString:date withFormat:@"yyyy-MM-dd"] withFormat:@"EE, MMMM dd yyyy"];
[headerView.dateLbl setText:formatHeaderStr];
[headerView.addEventBtn setTag:(section+1)*100];
[headerView.addEventBtn addTarget:self action:@selector(addEventBtnClicked:) forControlEvents:UIControlEventTouchUpInside];
[headerView layoutSubviews];
return headerView;
}
节数返回"sortedDates"计数,但仍在 [sortedDates objectAtIndex:section] 上崩溃。它也发生在我代码中的其他地方。
我不明白如何解决这些问题。这些方法一个接一个地被调用的延迟非常小,但当数组到达 viewForHeader 方法时,它似乎仍然是空的。
请帮忙。
使用它从sortedDates
获取值。
NSString *date = [sortedDates objectAtIndex:section-1];
如果您使用的是 objectAtIndex 方法,请确保您的数组中包含那么多对象。所以在您的情况下,只需检查
if (section >= 0 && section < [sortedArray count])
{
NSString *date = [sortedDates objectAtIndex:section];
}
还要检查 sortedDate 对象是否未意外释放。