2012-01-28 49 views
3

我使用ios5故事板,並與我使用篩選結果的uisearchbar的tablview。我下面從以下博客文章的提示,我也提出了這個問題 http://code-ninja.org/blog/2012/01/08/ios-quick-tip-filtering-a-uitableview-with-a-search-bar/ios5 UISearchBar過濾器tableview導致與一個空單元格的斷言錯誤

我看到的問題是,從我的濾波陣列取回物品時,自定義的UITableViewCell回來爲空。在iOS5中,我明白你應該只需要通過dequieReusableCell獲取一個單元格,而不是明確地初始化一個單元格。但是,當搜索欄中的搜索成功匹配單元格時,將返回爲空。我不知道如何使用自定義樣式手動初始化我的單元格。有任何想法嗎? 下面是我的cellForRowAtIndexPath方法的一個片段。

ItemCell * cell =(ItemCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; self.searchBar.tableView。如果(cell == nil)NSLog(@「爲什麼在我從搜索欄獲得成功匹配時發生這種情況?」); }

這會導致以下錯誤: 斷言失敗 - [UISearchResultsTableView _createPreparedCellForGlobalRow:withIndexPath

*終止應用程序由於未捕獲的異常 'NSInternalInconsistencyException',理由是:「UITableView的數據源必須返回從的tableView細胞:cellForRowAtIndexPath:'

回答

16

您在錯誤的表格中致電dequeueReusableCellWithIdentifier:

您的原型在您的主表中定義,並且需要從那裏出列。執行搜索時,系統會要求您填寫特殊的搜索表格。該表不包含您的單元格原型,並且不會在原始表格中搜索原型!

您的餐桌仍然以self.tableView的形式提供。而且您可以從那裏出列,即使是搜索結果表格也是如此。

取而代之的是:

ItemCell *cell = (ItemCell *)[tableView 
    dequeueReusableCellWithIdentifier:CellIdentifier]; 

使用此:

ItemCell *cell = (ItemCell *)[self.tableView 
    dequeueReusableCellWithIdentifier:CellIdentifier]; 
相關問題