无法在我的导航控制器显示点击SearchResultTableView排后目标场景(Can not

2019-11-02 19:16发布

我想通过过滤条目的UISearchBar的列表和显示详细信息用户点击一个结果行之后。 全部列表视图和详细信息视图通过导航控制器相连。 正常使用情况下(没有搜索)的作品般的魅力:

 (ListOfAllEntries)
 => (direct click on row)
 ==> (Details view for row)

这是也应努力:

(ListOfAllEntries) 
=> (Search)                  - OK!
==> (ListOfFilteredEntries)  - OK!
===> (click on result row)          - OK!
====> (Details view for row) - BOOUUMMM! UI and Nav.Ctrl broken

我使用一个UISearchBar(与UISearchDisplayController)来过滤的底层的UITableView。 作为苹果公司建议过滤的搜索结果会显示在所有的项目我原来的表视图顶部的默认第二表视图(searchDisplayController.searchResultsTableView)。

一切工作正常 - 过滤条目,并且我得到正确的结果行indexpath。 直到用户点击一个搜索结果行,我要推的详细信息视图的导航控制器顶部的选定行。 我的目标详细信息视图显示,但然后我的计划是在以下几个方面破:

  1. 滑动导航栏下方的目标视图显示器(见图像#2)
  2. 如果我按导航栏上的“BACK”我得到一个空白屏幕(见图片#3),之后再返回点击我的应用程序崩溃) uncaught exception 'NSInvalidArgumentException', reason: 'Can't add self as subview'

我试图显示与赛格瑞目标视图(场景):

if (tableView == self.searchController.searchResultsTableView) {
    [self performSegueWithIdentifier: @"showFoods" sender: self];
}

我试图显示经由直接推目标视图:

FoodViewController *fvc = [self.storyboard instantiateViewControllerWithIdentifier:@"FoodViewController"];
[self.navigationController pushViewController:fvc animated:YES];

这两种方法都得到相同的错误应用的行为。

见我的图片:

  • 为什么我的个人资料在导航栏下方列表?
  • 为什么导航堆栈乱码后,我把我的信息的场景?

任何暗示将不胜感激。

在的UISearchBar行动:

点击搜索结果行后 - 导航栏下我的个人资料现场的幻灯片

按“BACK”的场景中的所有条目不显示后

我的故事板。 注:红色箭头标志的问题。 (在故事板SEGUE效果很好。但如果我想语法去红色箭头的方式,我的UI是搞砸了!)。

Answer 1:

我找到了解决办法。

该错误是非常不具体。 因而其他人同样的问题都很难找到。 最后,我找到了一个位置: 通过一个UINavigationController错误向后导航

由于上述太问题,我把正确的轨道上:我不得不删除我的内容tableView: didSelectRowAtIndexPath:方法。

为什么? 由于是的UISearchBar一个新的话题对我来说,我读了一些教程和一些所谓的问题。 和所有的人都已经把代码中tableView: didSelectRowAtIndexPath: 。 此代码是为了处理上的搜索结果表中的一行点击。 在这里看到: http://www.appcoda.com/how-to-add-search-bar-uitableview/这里: 通过一个UINavigationController错误向后导航

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{    
    if (tableView == self.searchDisplayController.searchResultsTableView) {
        [self performSegueWithIdentifier: @"showRecipeDetail" sender: self];        
    }
}

出于某种原因,(也许新iOS7行为?!),这个代码是没有必要了。 更糟糕的是:这个代码产生上述问题,为iOS7 automaticall触发对搜索结果表中根据SEGUE和我的手册册触发器进行第二SEGUE火熄灭。 二塞格斯具有相同源和目标造成了问题。

所以,我完全删除了我tableView: didSelectRowAtIndexPath:覆盖的方法,一切工作就像一个魅力!



文章来源: Can not display target scene after click on row of SearchResultTableView in my navigation controller