ios5 UISearchBar 过滤表视图导致带有空单元格的断言错误
Posted
技术标签:
【中文标题】ios5 UISearchBar 过滤表视图导致带有空单元格的断言错误【英文标题】:ios5 UISearchBar to filter tableview causes Assertion error with a null cell 【发布时间】:2012-01-28 02:23:55 【问题描述】:我正在使用 ios5 故事板,并且有一个带有 uisearchbar 的 tablview,我正在使用过滤结果。我正在遵循以下博客文章中的提示,其中我也提出了这个问题 http://code-ninja.org/blog/2012/01/08/ios-quick-tip-filtering-a-uitableview-with-a-search-bar/:
我看到的问题是,当从过滤后的数组中取回项目时,自定义 UITableViewCell 会返回为 null。在 iOS5 中,我知道你应该只需要通过 dequieReusableCell 获取一个单元格,而不是显式地初始化一个单元格。但是,当搜索栏中的搜索成功匹配时,单元格返回为空。我不确定如何使用自定义样式手动初始化我的单元格。有任何想法吗? 这是我的 cellForRowAtIndexPath 方法中的一个 sn-p。
ItemCell *cell = (ItemCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; self.searchBar.tableView。 如果(细胞 == 零) NSLog(@“为什么当我从搜索栏获得成功匹配时会发生这种情况?”);
这会导致以下错误: -[UISearchResultsTableView _createPreparedCellForGlobalRow:withIndexPath
中的断言失败* 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“UITableView 数据源必须从 tableView:cellForRowAtIndexPath: 返回一个单元格:”
【问题讨论】:
【参考方案1】:你在错误的桌子上打电话给dequeueReusableCellWithIdentifier:
。
您的原型在您的主表中定义,需要从那里取出。执行搜索时,系统会要求您填写一个特殊的搜索表。该表不包含您的单元格原型,并且它不会在原始表中搜索原型!
您的表仍可作为self.tableView
使用。您可以从那里出列,即使是搜索结果表。
而不是这个:
ItemCell *cell = (ItemCell *)[tableView
dequeueReusableCellWithIdentifier:CellIdentifier];
使用这个:
ItemCell *cell = (ItemCell *)[self.tableView
dequeueReusableCellWithIdentifier:CellIdentifier];
【讨论】:
以上是关于ios5 UISearchBar 过滤表视图导致带有空单元格的断言错误的主要内容,如果未能解决你的问题,请参考以下文章
UISearchBar 不在 TableViewController 的表视图标题中?
UISearchbar 并在查看控制器 xcode swift 中传递数据