#pragma Search Methods
-(void)filterContentForSearchText:(NSString *)searchText scope:(NSString *)scope
{
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF beginswith[c] %@",searchText];
_AramaSonuclari = [_TarifAdi filteredArrayUsingPredicate:predicate];
}
-(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString
{
[self filterContentForSearchText:searchString scope:[[self.searchDisplayController.searchBar scopeButtonTitles] objectAtIndex:[self.searchDisplayController.searchBar selectedScopeButtonIndex]]];
return YES;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// Return the number of rows in the section.
if (tableView == self.searchDisplayController.searchResultsTableView)
{
return [_AramaSonuclari count];
}
else
{
return _TarifAdi.count;
}
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
TableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"TableViewCell" forIndexPath:indexPath];
cell.tag = indexPath.row;
//cell.imageView.image = nil;
if (tableView == self.searchDisplayController.searchResultsTableView)
{
cell.TitleLabel.text = _AramaSonuclari[indexPath.row];
}
else
{
cell.TitleLabel.text = _TarifAdi[indexPath.row];
}
return cell;
}
我们的问题是,当我们尝试在搜索栏中输入任何字符时,应用程序崩溃,我们确实调试了我们的代码工作而没有错误。我们认为,我们的问题在于故事板连接;我还添加了一张图片。当我们删除searchBar引用插座时,我们可以键入一些内容,但当然代码在没有连接的情况下无法正常工作。
错误日志:
2014-07-14 13:29:08.577 SevgiLezzeti [3839:60b] ***断言失败 - [UISearchResultsTableView dequeueReusableCellWithIdentifier:forIndexPath:],/ SourceCache / UIKit_Sim / UIKit-2935.137 / UITableView.m:5439
2014-07-14 13:29:08.582 SevgiLezzeti [3839:60b] ***由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'无法使用标识符TableViewCell对单元格出列 - 必须注册一个笔尖或一个标识符的类或连接故事板'
中的原型单元格
答案 0 :(得分:4)
您还必须将单元格注册到searchdisplaycontroller。
在View中加载
如果您在代码中创建单元格
[self.searchDisplayController.searchResultsTableView registerClass:[TableViewCell class]
forCellReuseIdentifier:@"IdentifierForCell"];
如果您正在使用笔尖创建单元格
[self.searchDisplayController.searchResultsTableView registerNib:[UINib nibWithNibName:@"CellNibName" bundle:nil]
forCellWithReuseIdentifier:@"IdentifierForCell"];
答案 1 :(得分:1)
我解决了这个问题:
在这一行:
TableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"TableViewCell" forIndexPath:indexPath];
你需要删除“forIndexPath:indexPath” 这样:
TableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"TableViewCell"];