0

UISearchBarを使用していますが、検索は完全に機能していますが、キャンセルボタンをクリックして検索した後、UItableViewでdidSelectedRowAtIndexPathが機能していません。行を選択して先に進むことができません。

何か案が?

- (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 = @"";

searchBarCancelButtonClicked:、これはの別の呼び出しにつながる可能性がありsearchBar:textDidChange:ます。あなたが設定したsearchBar:textDidChange:もの:

canSelectRow = NO;

長さが0の文字列の場合(これはに当てはまります@"")。それが根本的な原因なのかしら?

于 2012-04-20T11:34:31.850 に答える