2014-10-22 2 views
0

Я искал ответы на этот вопрос, но я не нашел ответных ответов. В моем представлении таблицы, когда я касаюсь одной ячейки, отображается подробный вид. Исходный код:didSelectRowAtIndexPath UISearchBar

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    [self performSegueWithIdentifier:@"trajetDetail" sender:tableView]; 


} 

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
if ([segue.identifier isEqualToString:@"trajetDetail"]) { 

    RechercheDetailViewController *detailViewController = segue.destinationViewController; 

    if (sender == self.searchDisplayController.searchResultsTableView) 
    { 
     NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]; 
     NSString *destinationTitle = [[self.trajets objectAtIndex:[indexPath row]] name]; 
     [detailViewController setTitle:destinationTitle]; 
    } 


} 

}

Вопрос заключается в том, что когда пользователи делают поиск с UISearchBar (и UISearchDisplayController), что они также могут коснуться клетки и проталкивания на детальном.

Извините за мой английский, и если это не ясно, просто скажите мне, что я постараюсь сделать его более ясным.

сердечным приветом

+0

Вопрос не ясен для меня. Обычное поведение заключается в том, что прикосновение к ячейке должно выполнять segue до подробного представления, независимо от того, был ли введен поиск. Вы говорите, что это делает это, и вы этого не хотите, или это не так, и вы хотите, или что-то еще? –

ответ

0

, что неправильно я вижу в вашем коде в методе prepareforsegue, вы выбираете indexpath стандартного Tableview не поиска Tableview, это ниже линии нужно изменить

NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]; 

prepareForSegue бы стать чем-то вроде этого после изменения

вы должны использовать этот код вместо

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
if ([segue.identifier isEqualToString:@"trajetDetail"]) { 

    RechercheDetailViewController *detailViewController = segue.destinationViewController; 

    if (sender == self.searchDisplayController.searchResultsTableView) 
    { 
     NSIndexPath *indexPath = [self.searchDisplayController.searchResultsTableView indexPathForSelectedRow]; 
     NSString *destinationTitle = [[self.trajets objectAtIndex:[indexPath row]] name]; 
     [detailViewController setTitle:destinationTitle]; 
    } 


} 
} 
+0

Ваша проблема решена? – ZAZ

+0

нет ... Он отлично работает из таблицы, но когда я пытаюсь выполнить поиск, у меня есть сигнал SIGABRT. – Antoine

Смежные вопросы