0

在使用情节提要的项目中,我有一个带有 UISearchBar 的 UITableView。

搜索功能没有问题。

我将单元格链接到 Seague Push 到下一个视图。

如果我选择一个单元格,则会加载下一个视图并且一切正常。

一切都很完美,直到我使用 UISearchBar,然后停止工作 Segue Push,当我选择过滤的单元格时,我无法进入下一个视图。

该怎么办?强制转场。

此链接上的项目模型:

http://uploaded.to/file/ooohrxnf

//Code for search
- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString
{

[searchData removeAllObjects];

NSArray *group;

for(group in arraynumbers)
{
    NSMutableArray *newGroup = [[NSMutableArray alloc] init];
    NSString *element;

    for(element in group)
    {
        NSRange range = [element rangeOfString:searchString options:NSCaseInsensitiveSearch];

        if (range.length > 0) {
            [newGroup addObject:element];
        }
    }

    if ([newGroup count] > 0) {
        [searchData addObject:newGroup];
    }        
}

onTableData = searchData;

return YES;
}

// Force Segue when UISearchBar isActive
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (self.searchDisplayController.isActive) {


    NSMutableArray *mutablerray = [searchData objectAtIndex:indexPath.section];        
    number = [mutablerray objectAtIndex:indexPath.row];       
    [self performSegueWithIdentifier:@"detail" sender:self];
    searchBar.text = @"";
}

}

// pickup number when UISearchBar isNotActive and reloadData after Segue
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"detail"])
{
    if (!self.searchDisplayController.isActive) 
    {

        number = [[onTableData objectAtIndex:[[self.tableView indexPathForSelectedRow] section]] objectAtIndex:[[self.tableView indexPathForSelectedRow] row]];
    }

    NSLog(@"number: %@", number);
    [segue.destinationViewController setNumber:number];

    [self.tableView reloadData];
}
}
4

1 回答 1

0

我遇到了完全相同的问题,并最终尝试了各种事情,因为 UISearchDisplayController 对我来说很新。我最终将 tableView 设置为 searchDisplayController 的 searchResultsDelegate:

searchDisplayController.searchResultsDelegate = self;

我不太清楚为什么这会照顾它。有人有解释吗?

于 2012-05-27T04:15:35.073 回答