didSelectRowAtIndexPath UISearchBar

时间:2014-10-22 17:01:21

标签: ios xcode uitableview 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)进行搜索时,他们也可以触摸单元格并将其推送到详细视图。

对不起我的英语,如果不清楚,请告诉我,我会尽量让它更清楚。

最诚挚的问候

1 个答案:

答案 0 :(得分:0)

我在你的代码中看到的错误是你的prepareforsegue方法,你选择标准tableView的indexpath而不是搜索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];
    }


}
}