xcode搜索栏崩溃尝试输入内容

时间:2014-07-14 10:26:53

标签: ios objective-c

enter image description here

#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对单元格出列 - 必须注册一个笔尖或一个标识符的类或连接故事板'

中的原型单元格

2 个答案:

答案 0 :(得分:4)

您还必须将单元格注册到searchdisplaycontroller。

Important: You must register a class or nib file using the registerNib:forCellReuseIdentifier: or registerClass:forCellReuseIdentifier: method before calling this method.

在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"];