将UITableViewCells重用于UISearchDisplayController

时间:2013-10-12 16:45:47

标签: objective-c uitableview uisearchdisplaycontroller

我想出了一个我设法解决的问题,但问题是我不明白它是如何修复的,哈哈。任何人都可以帮助教育我吗?

我正在创建一个简单的表视图应用程序,其中包含一组数组,其中字符串使用UILocalizedIndexedCollation分割成多个部分。我还在tableview的标题中设置了UISearchBar,用户可以使用它来查找特定的字符串。

当我设置UISearchDisplayController方法并添加了一堆if语句以将搜索结果拉入表格视图时,它有点奇怪。

这是我的cellForRow:atIndexPath方法:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *cellIdentifier = @"Simple Cell";
    UITableViewCell *cell = nil;

    // Get a cell from the table view.
    if (tableView == self.searchDisplayController.searchResultsTableView) {
        // Grab a cell for the search results
        cell = [self.tableView dequeueReusableCellWithIdentifier:cellIdentifier];
    } else {
        // Grab a cell for the main table view
        cell = [self.tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];
    }

    // Setup and return the cell.
    if (tableView == self.tableView) {
        cell.textLabel.text = self.sectionsArray[indexPath.section][indexPath.row];
    } else {
        cell.textLabel.text = self.searchResults[indexPath.row];
    }

    return cell;
}

这很好用,但是当我更改从self.tableView获取单元格的部分时:

  // Get a cell from the table view.
  cell = [self.tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];

运行模拟器时出现以下错误:

由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'请求无效索引路径处的rect({length = 2,path = 0 - 2})'

如果我不明白为什么会发生这种情况,这不是什么大不了的事,但知道这会很好!

感谢您阅读:)

0 个答案:

没有答案