我有一个tableview,它有一个UISegmentedControl作为tableViewController的tableHeaderView。我有两个数组作为属性,将根据segmentedController中选择的索引填充单元格。当两个数组中包含不同数量的项时,我会得到一个超出范围的异常,这是我所期望的。当每个数组中的项数相同时,我可以重新加载tableView数据,一切正常。如何在不再需要单元格时阻止控制器尝试重用单元格?
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Downloads Cell" forIndexPath:indexPath];
// 1st option selected
if (self.downloadTypeSelector.selectedSegmentIndex == 0) {
if (indexPath.row < self.talkDownloads.count) {
// Configure the cell...
Talk *talk = [self.talkDownloads objectAtIndex:indexPath.row];
cell.textLabel.text = talk.title;
cell.detailTextLabel.text = talk.speaker;
}
// 2nd option selected
} else if (self.downloadTypeSelector.selectedSegmentIndex == 1) {
if (indexPath.row < self.speechesDownloads.count) {
Speech *speech = [self.speechesDownloads objectAtIndex:indexPath.row];
cell.textLabel.text = speech.title;
cell.detailTextLabel.text = speech.speaker;
}
}
return cell;
}
答案 0 :(得分:1)
我看到你有条件检查downloadTypeSelector.selectedSegmentIndex并相应地使用相应的数组,这很好。
- tableView:numberOfRowsInSection:
中是否有相同的if else条件检查selectedSegmentIndex并返回相应数组的正确计数?
如果有效,那么我认为检查indexPath.row&lt; array.count也将过时。
干杯!