0

我正在使用 UISearchBar,并且搜索工作正常,但是在单击取消按钮进行搜索后,didSelectedRowAtIndexPath 在 UItableView 中不起作用。它不允许我选择任何行以更进一步。

任何想法?

- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar 
{
    isSearchOn = YES;
    canSelectRow = NO;
    table.scrollEnabled = NO;
}

- (void) doneSearching:(id)sender 
{   
    isSearchOn = NO;
    canSelectRow = YES;
    table.scrollEnabled = YES;
    self.navigationItem.rightBarButtonItem = nil;

    [table reloadData];
}

- (void)searchBar:(UISearchBar *)searchBar 
    textDidChange:(NSString *)searchText 
{
    if ([searchText length] > 0) {
        isSearchOn = YES;
        canSelectRow = YES;
        table.scrollEnabled = YES;
        [self searchMoviesTableView:searchText];
    }
    else {
        isSearchOn = NO;
        canSelectRow = NO;
        table.scrollEnabled = NO;       
    }
    [table reloadData];
}

- (void) searchMoviesTableView :(NSString*)searchText{
    [searchResult removeAllObjects];

    for (NSDictionary *artistDic in listOfMovies) {
        NSRange titleResultRange = [[artistDic valueForKey:@"artist"] rangeOfString:searchText options:(NSCaseInsensitiveSearch | NSLiteralSearch)];
        if (titleResultRange.length > 0)
            [searchResult addObject:artistDic];
    }
}

-(void)searchBarCancelButtonClicked:(UISearchBar *)searchBar
{
    searchBar.text = @"";
    table.scrollEnabled = true;
    [table reloadData];
    [searchBar resignFirstResponder];
}

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar 
{
    [searchBar resignFirstResponder];
}
4

2 回答 2

1

这是我的错误...

else {
    isSearchOn = NO;
    canSelectRow = NO;
    table.scrollEnabled = NO;       
}

set canSelectRow=YES;
于 2012-04-20T11:34:16.710 回答
0

我注意到你在打电话:

searchBar.text = @"";

in searchBarCancelButtonClicked:,这可能会导致searchBar:textDidChange:. 在searchBar:textDidChange:你设置:

canSelectRow = NO;

对于长度为 0 的字符串(对于 是正确的@"")。我想知道这是根本原因吗?

于 2012-04-20T11:34:31.850 回答