从搜索控制器导航后缺少导航栏

时间:2015-07-07 20:10:14

标签: ios swift

以下场景:

我有一个带导航控制器和表格视图的主视图。带有细节视图。我在导航栏上添加了一个类似于Apple UICatalog的搜索控制器。我在搜索结果控制器中添加了另一个segue到详细视图。

enter image description here

问题

当我在normale tableview中选择一行时,详细视图包含一个导航栏,行为符合预期。 当我执行搜索并在结果搜索控制器中选择一行时,在显示的详细信息视图中缺少导航栏。我知道结果视图控制器现在有导航栏。

问题

如何从标准导航堆栈中获取导航栏?我尽量避免手动将导航栏添加到详细视图中,因为当我来自normale表视图时它正在工作。

更新

我在主表视图中添加了一个额外的segue到搜索表视图。

enter image description here 当我使用:showViewController(searchController, sender: tableView)调用搜索时,我得到导航栏,但没有搜索输入。使用presentViewController(searchController, animated: true, completion: nil)我获得了搜索视图,但导航栏在详细信息视图中消失了。

6 个答案:

答案 0 :(得分:1)

如果您按照segue进行操作,则可以看到导航控制器与搜索控制器之间没有链接。搜索控制器根本不在导航堆栈中,因此当您转到结果时,您将无法获得一个条形码。为了能够导航回您的搜索控制器,您需要从普通的tableview中删除它,或者将第二个导航控制器与搜索控制器作为其根视图,就像使用主视图一样。

答案 1 :(得分:1)

最后我找到了解决方案。我抛弃了结果视图控制器并在原始表视图控制器中处理结果。在导航到详细视图之前,如果处于活动状态,我会隐藏搜索栏:

    if searchController.active {
        searchController.searchBar.hidden = true
    }

当我返回主视图控制器时,我再次取消隐藏搜索栏。

    if self.searchController.active {
        self.searchController.searchBar.hidden = false
    }

答案 2 :(得分:1)

我正在使用另一种方式进行搜索,将主表视图控制器用作searchResultViewController。俄语中有awesome tutorial(但您可以阅读英语代码)。

它帮助我设置了搜索栏。

如果你不想看,那就试试

searchController.hidesNavigationBarDuringPresentation = false

采用ViewDidLoad方法。

答案 3 :(得分:0)

可能在某些代码或故事板中隐藏了导航栏。只需尝试在您想要显示导航栏的控制器文件中添加以下行:

self.navigationController?.navigationBarHidden = false

答案 4 :(得分:0)

在推送或呈现给下一个ViewController之前,我添加了这一行

self.navigationController?.isNavigationBarHidden = false

对我有用

答案 5 :(得分:0)

#!/usr/bin/python import pyspark, os sc = pyspark.SparkContext() print(os.getenv("DATAPROC_VERSION")) 在导航堆栈之外显示视图控制器,如果要将其放置在导航堆栈中,则应像这样使用presentViewController

pushViewController

然后,当searchController是顶视图控制器时,您可以根据需要编辑导航栏外观