我有一个带导航控制器和表格视图的主视图。带有细节视图。我在导航栏上添加了一个类似于Apple UICatalog的搜索控制器。我在搜索结果控制器中添加了另一个segue到详细视图。
当我在normale tableview中选择一行时,详细视图包含一个导航栏,行为符合预期。 当我执行搜索并在结果搜索控制器中选择一行时,在显示的详细信息视图中缺少导航栏。我知道结果视图控制器现在有导航栏。
如何从标准导航堆栈中获取导航栏?我尽量避免手动将导航栏添加到详细视图中,因为当我来自normale表视图时它正在工作。
我在主表视图中添加了一个额外的segue到搜索表视图。
当我使用:showViewController(searchController, sender: tableView)
调用搜索时,我得到导航栏,但没有搜索输入。使用presentViewController(searchController, animated: true, completion: nil)
我获得了搜索视图,但导航栏在详细信息视图中消失了。
答案 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是顶视图控制器时,您可以根据需要编辑导航栏外观