iOS,Swift 3 - 当我从详细视图返回后单击取消时,UISearchBar 消失

Posted

技术标签:

【中文标题】iOS,Swift 3 - 当我从详细视图返回后单击取消时,UISearchBar 消失【英文标题】:iOS, Swift 3 - UISearchBar disappears when I click on Cancel after returning from Detail View 【发布时间】:2017-08-07 15:24:34 【问题描述】:

我在 containerView 中有一个 tableView。以编程方式向其中添加了一个 searchBar。一切正常,除了以下情况:当我点击一个单元格时,tableView 被 searchBar 过滤,然后我从 detailView(通过 push segue 呈现)返回,然后我关闭了 searchBar(取消按钮) ,然后搜索栏消失。 神奇的是,当我在控制台调试的时候,searchBar对象还在,而且还是tableView的headerView... 任何人都有一个想法,什么可能导致这个问题,以及如何解决它?

这是我的相关代码:

在 viewDidLoad 中:

self.searchController.searchResultsUpdater = self
self.searchController.delegate = self
self.searchController.dimsBackgroundDuringPresentation = false
self.searchController.hidesNavigationBarDuringPresentation = false
self.searchController.definesPresentationContext = false
self.tableView.tableHeaderView = self.searchController.searchBar

searchControllerDelegate:

func willPresentSearchController(_ searchController: UISearchController) 
    if let mpvc = self.parent as? MyPulleyViewController 
        mpvc.navigationController?.navigationBar.isTranslucent = true
    



func willDismissSearchController(_ searchController: UISearchController) 
    if let mpvc = self.parent as? MyPulleyViewController 
        mpvc.navigationController?.navigationBar.isTranslucent = false
    

(myPulleyViewController是包含containerView的VC,self是containerView的VC)

在 IB 上,mpvc 设置为 Extend edges: Under Opaque Bars

感谢您的帮助!

【问题讨论】:

【参考方案1】:

我遇到了同样的问题,我认为这是 ios 问题,我通过为搜索结果制作视图控制器来解决它:

   let searchVC = mainStoryboard.instantiateViewController(withIdentifier: identifier) as! SearchResultViewController
    let searchController = UISearchController(searchResultsController: searchVC)
    searchController.searchResultsUpdater = searchVC

而且效果很好。

【讨论】:

以上是关于iOS,Swift 3 - 当我从详细视图返回后单击取消时,UISearchBar 消失的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 3 中刷新视图

TableView 在 Swift 中推送到详细视图

双重返回上一个视图 - Swift

iOS swift pull to refresh mixes with tableview

IOS/Swift:将表视图中的对象传递给详细视图控制器

出现视图时执行函数 - Swift