我已经搜索了这个问题的答案,但我没有找到任何相关的答案。在我的表格视图中,当我触摸一个单元格时,会按下详细信息视图。源代码:
- (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 :(得分: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];
}
}
}