Размещена панель поиска в табличном представлении. Выбор результата дает неправильный подробный вид?

Я создал контроллер TableView, который содержит настраиваемые ячейки и заполняется данными из базы данных MySQL. Все отлично работает.

Я добавил поисковую строку, и поиск тоже отлично работает. Однако, когда я выбираю результаты поиска, это приводит меня к неправильному подробному представлению (например, я нажимаю «Cookies», и оно отправляет меня к подробному представлению «Яблоки»). Я что-то упустил в моем файле .m? Вот мой код:

- (int)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{

    if (tableView == self.searchDisplayController.searchResultsTableView) {
        return [searchResults count];



    } else {
        return [Strains count];

    }


}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *strainTableIdentifier = @"StrainTableCell";

    StrainTableCell *cell = (StrainTableCell *)[tableView dequeueReusableCellWithIdentifier:strainTableIdentifier];
    if (cell == nil) 


        cell = [[StrainTableCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:strainTableIdentifier];



        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"StrainTableCell" owner:self options:nil];
        cell = [nib objectAtIndex:0];

    if (tableView == self.searchDisplayController.searchResultsTableView) {

        cell.titleLabel.text = [[searchResults objectAtIndex:indexPath.row] objectForKey:@"Title"];
        cell.descriptionLabel.text = [[searchResults objectAtIndex:indexPath.row] objectForKey:@"Description"];
        cell.ratingLabel.text = [[searchResults objectAtIndex:indexPath.row] objectForKey:@"Rating"];


        NSLog(@"%@", searchResults);
    } else {
        cell.titleLabel.text = [[Strains objectAtIndex:indexPath.row] objectForKey:@"Title"];
         cell.descriptionLabel.text = [[Strains objectAtIndex:indexPath.row] objectForKey:@"Description"];
         cell.ratingLabel.text = [[Strains objectAtIndex:indexPath.row] objectForKey:@"Rating"];


    }

    {

    } 


return cell;

}



- (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope
{
    NSPredicate *resultPredicate = [NSPredicate 
                                    predicateWithFormat:@"SELF contains[cd] %@",
                                    searchText];

    searchResults = [Strains filteredArrayUsingPredicate:resultPredicate];


}

-(BOOL)searchDisplayController:(UISearchDisplayController *)controller 
shouldReloadTableForSearchString:(NSString *)searchString
{
    [self filterContentForSearchText:searchString 
                               scope:[[self.searchDisplayController.searchBar scopeButtonTitles]
                                      objectAtIndex:[self.searchDisplayController.searchBar
                                                     selectedScopeButtonIndex]]];

    return YES;
}


- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    StrainDetailViewController *detailViewController = [[StrainDetailViewController alloc]
                                                        initWithNibName:@"StrainDetailViewController" bundle:nil];
    detailViewController.title = [[Strains objectAtIndex:indexPath.row] objectForKey:@"Title"];
    detailViewController.strainDetail = [Strains objectAtIndex:indexPath.row];
              [self.navigationController pushViewController:detailViewController animated:YES];


    }

person Blair Warner    schedule 04.04.2013    source источник


Ответы (1)


person    schedule
comment
Привет! Это исправляет результаты моей панели поиска с точки зрения отображения правильного контроллера подробного представления. Однако, когда я реализую это, он удаляет данные из моего контроллера подробного представления, когда я не ищу. Например. Если я просто делаю выбор из своего табличного представления, оно переходит к пустому подробному представлению. - person Blair Warner; 08.04.2013
comment
пустая причина [Strains objectAtIndex:indexPath.row] возвращает пустое значение. Я предлагаю вам не использовать два UITableView (экземпляр). вы можете изменить dataSoure UITableView и перезагрузить UITableView, если вы ищете. - person spet; 10.04.2013
comment
Я не знаю, как отображаются два UITableView. тот самый кадр? - person spet; 10.04.2013
comment
... вы можете изменить источник данных UITableView и перезагрузить UITableView, если вы ищете. Как мне это сделать? Я в замешательстве (и довольно новичок в этом). - person Blair Warner; 07.05.2013