单击此按钮 - [搜索]时,会出现弹出窗口。
如果我写下搜索字词并单击“搜索”按钮,则数据将填入NSMutableArray。
此搜索表使用“自定义单元格”。
我无法将“自定义单元格”与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 :(得分:3)
如果这确实是您的tableView:cellForRowAtIndexPath:
方法的样子,那么如果dequeueReusableCellWithIdentifier:
返回nil,则您错过了分配新单元格的部分。
答案 1 :(得分:0)
我有同样的错误。我认为这是因为调整某些按钮属性意味着需要设置视图(显然是懒洋洋地创建),这意味着表需要准备就绪,而且还没有,可能是因为它的数据源尚未连接或者其他的东西。尝试稍后在viewDidLoad方法中将按钮调整移动到以后;这对我有用。
(另见UITableView getting Initialized in the middle of viewDidLoad?,其中我发布了相同的答案。)
答案 2 :(得分:0)
故事板中的自定义单元格,而不是“self.searchDisplayController.searchResultsTableView”,所以只需更改:
SearchContentCell * cell =(SearchContentCell *)[ - > tableView< - dequeueReusableCellWithIdentifier:@“SearchCell”];
到
SearchContentCell * cell =(SearchContentCell *)[ - > self.tableView< - dequeueReusableCellWithIdentifier:@“SearchCell”];