2011-11-01 86 views
2

時自定義單元格錯誤當我單擊此按鈕 - [搜索]時,彈出窗口出現。重新加載searchResultsTableView

如果我記下搜索詞並單擊搜索按鈕,數據將填充到NSMutableArray中。

此searchTable使用「自定義單元格」。

我無法將「自定義單元格」與NSMutableArray中的數據結合使用。

重新加載'searchTableView'時會出錯。

我該怎麼辦?請大家幫幫我〜謝謝〜

[錯誤]

2011-10-31 20:56:52.915 THEBE [1207:10403] ABCD 2011-10-31 20:56:53.158 THEBE [1207:10403] *聲明失敗 - [UISearchResultsTableView _createPreparedCellForGlobalRow:withIndexPath:],/SourceCache/UIKit_Sim/UIKit-1912.3/UITableView.m:6072 2011-10-31 20:56:53.159 TheBE [1207:10403] 由於未捕獲的異常「NSInternalInconsistencyException」而終止應用程序,原因:'UITableView dataSource必須從tableView返回一個單元格:cellForRowAtIndexPath:' * *第一擲調用堆棧: (0x12a2052 0x1753d0a 0x124aa78 0xc712db 0x381ee3 0x382589 0x36ddfd 0x37c851 0x327322 0x12a3e72 0x29ba92d 0x29c4827 0x294afa7 0x294cea6 0x294c580 0x12769ce 0x120d670 0x11d94f6 0x11d8db4 0x11d8ccb 0x1fae879 0x1fae93e 0x2e8a9b 0x1d68 0x1cc5爲0x1)


 

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

     //****** custom cell *********/ 
     SearchContentCell *cell = (SearchContentCell *)[tableView dequeueReusableCellWithIdentifier:@"SearchCell"]; 

     [cell.contentLabel setLineBreakMode:UILineBreakModeWordWrap]; 
     [cell.contentLabel setMinimumFontSize:FONT_SIZE]; 
     [cell.contentLabel setNumberOfLines:0]; 
     [cell.contentLabel setFont:[UIFont systemFontOfSize:FONT_SIZE]]; 
     [cell.contentLabel setTag:1];  

     ....... 
     cell.verseLabel.text = @"Test2" ; 
     cell.contentLabel.text = @"test"; 
     ....... 

     return cell; 

    } 
    -(void)mockSearch:(NSString*)searchString 
    { 
     [_data removeAllObjects]; 
     [request setEntity:entityBible]; 
    //   
     //create predicate 
     NSString *wildcardedString = [NSString stringWithFormat:@"*%@*",searchString]; 
     NSPredicate *predicate = [NSPredicate predicateWithFormat:@"content like %@", wildcardedString]; 

     [request setPredicate:predicate]; 

     NSError *error; 
     NSMutableArray *mutableFetchResults = [[managedObjectContext executeFetchRequest:request error:&error] mutableCopy]; 
     if (mutableFetchResults == nil) { 
      // Handle the error; 
      NSLog(@"eerror"); 
     } 

     _data = mutableFetchResults; 

     [self.searchDisplayController.searchResultsTableView reloadData]; 

    } 
    -(void)searchBarSearchButtonClicked:(UISearchBar *)searchBar{ 

     [self mockSearch:searchBar.text]; 

    } 

我想錯誤部分:

[self.searchDisplayController.searchResultsTableView reloadData];

+0

[此Stackoverfow鏈接] [1]幫助我。試試看。 [1]:http://stackoverflow.com/q/8066668/751026 – thesummersign

回答

3

如果這確實是tableView:cellForRowAtIndexPath:方法的樣子,那麼如果dequeueReusableCellWithIdentifier:返回nil,則缺少分配新單元的部分。

+0

你說得對。 [tableView:cellForRowAtIndexPath],[dequeueReusableCellWithIdentifier:] return nil。所以我添加了代碼。但單元格返回零。我找不到理由。 – hyekyung

+0

編輯你的問題,並把代碼放在那裏,格式正確。 –

0

我有同樣的錯誤。我認爲這是因爲調整某些按鈕的屬性意味着需要設置視圖(顯然是懶洋洋地創建),這意味着表需要準備好去,而且還沒有,可能是因爲它的數據源沒有連接或者其他的東西。嘗試將按鈕調整移到稍後的viewDidLoad方法中;這對我有效。

(參見UITableView getting Initialized in the middle of viewDidLoad?,其中我張貼了同樣的答案。)

0

自定義單元格中的故事板,而不是在 「self.searchDisplayController.searchResultsTableView」,所以才改變:

SearchContentCell *電池=(SearchContentCell *)[ - > tableView < - dequeueReusableCellWithIdentifier:@「SearchCell」];

SearchContentCell *細胞=(SearchContentCell *)[ - >自。tableView < --dequeueReusableCellWithIdentifier:@「SearchCell」];