кнопка отмены на панели поиска не отменяется правильно - PullRequest
1 голос
/ 11 ноября 2011

У меня есть панель поиска, я могу искать сейчас, но когда я ввожу текст для поиска и нажимаю кнопку отмены.Это не возвращает меня к моей первой стадии, то есть к полному пунктам в таблице.

Например: я ищу предмет по слову: а, он дает мне все предметы, да, это сейчас, но когда я нажимаю кнопку отмены, я хочу, чтобы программа выдала мне все предметысуществует, а не просто предметы.

Вот код: пожалуйста, помогите мне.Большое вам спасибо.

- (void)searchBarCancelButtonClicked:(UISearchBar *)aSearchBar
{
    searchBar.text = @"";
    [searchBar resignFirstResponder];

    letUserSelectRow = YES;
    searching = NO;
    self.tableView.scrollEnabled = YES;

    NSLog(@"what text after cancel now: %@", searchBar.text);

    [self.tableView reloadData];


}
- (NSMutableArray *) searchTableView {

    NSString *searchText = searchBar.text;
    NSLog(@"search text: %@", searchText);
    NSMutableArray *resultArray = [[NSMutableArray alloc] init];
    NSMutableArray *tempArr = [[NSMutableArray alloc] init];

    for (NSDictionary *dTemp in arrayData)
    {
        NSString *tempStr = [dTemp objectForKey:@"url"];
        NSLog(@"sTemp string: %@",[ NSString stringWithFormat:@"%@", tempStr]);
        NSRange titleResultsRange = [tempStr rangeOfString:searchText options:NSCaseInsensitiveSearch];

        if (titleResultsRange.length > 0)
        {
            NSLog(@"1 count :%d", [resultArray count]);
            [resultArray addObject:dTemp];
            NSLog(@"2 count :%d", [resultArray count]);
            [tempArr addObject:resultArray];
            [resultArray release];

            resultArray = [NSMutableArray new];
        }

    }
    if (resultArray != nil) {
        [resultArray release];
    }


    return tempArr;
}

- (void)searchBar:(UISearchBar *)aSearchBar textDidChange:(NSString *)searchText
{

    NSLog(@"what text after cancel now: %@", searchBar.text);

    if([searchText length] > 0) {
        [sortedArray removeAllObjects];
        searching = YES;
        letUserSelectRow = YES;
        self.tableView.scrollEnabled = YES;
        NSMutableArray *searchArray = [self searchTableView];
        sortedArray = [[NSMutableArray alloc] initWithArray:searchArray copyItems:YES];

        for (int i = 0; i<[sortedArray count]; i++) {
            NSLog(@"this is the search array: %@", [[sortedArray objectAtIndex:i] class]);
        }

        NSLog(@"sorted array: %d", [sortedArray count]);
    }
    else {

        searching = NO;
        letUserSelectRow = NO;
        self.tableView.scrollEnabled = NO;
    }

    [self.tableView reloadData];
}

1 Ответ

0 голосов
/ 23 ноября 2011

Вам не нужно переопределять какие-либо методы UISearchBar для достижения этой цели.Новый способ сделать это основывается на контроллере UISearchDisplay (в частности, shouldReloadTableForSearchString).

Объявите контроллер представления в соответствии с протоколом UISearchDisplayDelegate и сохраните две переменные экземпляра: ваша модель как NSArray(все данные) и отфильтрованный массив как NSMutableArray (подмножество ваших данных).Код, который вы в настоящее время имеете в searchTableView, отфильтровывает содержимое модели и помещает его в отфильтрованный NSMutableArray.Затем вы должны переопределить следующие UITableView методы: -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section и -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath.В каждом из них перед возвратом сделайте сравнение, чтобы определить, равен ли ваш аргумент tableView self.searchDisplayController.searchResultsTableView.Если это так, пользователь просматривает отфильтрованный список, и вы должны использовать содержимое отфильтрованного NSMutableArray для создания представления, в противном случае пользователь просматривает весь набор данных, и вы должны использовать содержимое * 1014.* это держит вашу модель.Взгляните на следующий код Apple для простого примера того, что я описал:

http://developer.apple.com/library/ios/#samplecode/TableSearch/Introduction/Intro.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...