如何在需要时重用UITableViewCell?

时间:2015-02-28 01:15:16

标签: ios objective-c uitableview

我有一个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;
    }

1 个答案:

答案 0 :(得分:1)

我看到你有条件检查downloadTypeSelector.selectedSegmentIndex并相应地使用相应的数组,这很好。

- tableView:numberOfRowsInSection:中是否有相同的if else条件检查selectedSegmentIndex并返回相应数组的正确计数?

如果有效,那么我认为检查indexPath.row&lt; array.count也将过时。

干杯!