UISplitViewController + UISearchController 显示搜索细节

Posted

技术标签:

【中文标题】UISplitViewController + UISearchController 显示搜索细节【英文标题】:UISplitViewController + UISearchController shows search on detail 【发布时间】:2015-08-25 18:58:48 【问题描述】:

在 iPhone 上,我们有一个 UISplitViewController。 master在tableHeaderView中有一个搜索控制器。如果我们激活了搜索,当我们转到详细信息时,搜索栏仍会显示在详细信息页面上。我们如何摆脱它。

这是在 tableview 中添加搜索栏的代码

    self.searchController.searchResultsUpdater = self
    self.searchController.hidesNavigationBarDuringPresentation = false
    self.searchController.dimsBackgroundDuringPresentation = false
    self.searchController.definesPresentationContext = true
    self.searchController.searchBar.sizeToFit()
    self.tableView.tableHeaderView = searchController.searchBar

我试图在 prepareForSeque 中辞去FirstResponder

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) 
    if segue.identifier == "Show Event Filter" 
        self.sendEventWithCategory(kAnalyticsCategoryUI_Action, withAction: kAnalyticsActionList_Select, withLabel: "Select filter", withValue: nil, forModuleNamed: self.module?.name)
        let navigationController = segue.destinationViewController as! UINavigationController
        let detailController = navigationController.viewControllers[0] as! EventsFilterViewController
        detailController.eventModule = self.eventModule
        detailController.hiddenCategories = self.hiddenCategories
        detailController.module = self.module
        detailController.delegate = self
     else if segue.identifier == "Show Detail" 
        let detailController = (segue.destinationViewController as! UINavigationController).topViewController as! EventsDetailViewController
        let event = fetchedResultsController.objectAtIndexPath(self.tableView.indexPathForSelectedRow!) as! Event
        detailController.event = event
        detailController.module = self.module
    
    self.searchController.searchBar.resignFirstResponder()

我也尝试删除 segue,并在 didSelectRowAtIndexPath 中调用 resignFirstResponder。似乎 resignFirstResponder 没有做任何事情。使用 Xcode 7 beta 6(在 beta 5 上发现)。

【问题讨论】:

看到这个答案:***.com/questions/32181330/… 我已经在 prepareForSegue 中尝试过,但没有解决。 你能把你在 prepareForSegue 中使用的代码贴出来吗? 只是为了好玩尝试将 resignFirstResponder 移动到 prepareForSegue 方法的开头。我没有运行 Beta,因此我无法提供其他帮助。 我取出 segue 并将 resignFirstResponder 移动到 didSelectRowAtIndexPath。我还重新排列了 prepareForSegue 中的行。好像 resignFirstResponder 什么也没做。 【参考方案1】:

我遇到了完全相同的问题。通过将以下代码添加到 viewDidLoad 上的主视图控制器来解决此问题: self.definesPresentationContext = true

【讨论】:

我忘记回来更新了。我们发现这是可行的,但是当我们在 iphone 上回击主列表时,当我们在导航栏中关闭半透明时会导致一个新问题。

以上是关于UISplitViewController + UISearchController 显示搜索细节的主要内容,如果未能解决你的问题,请参考以下文章

UISplitViewController 一致分隔符

UISplitViewController - 并排或纵向叠加

在 UIViewControllers 和 UISplitViewController 之间导航 [关闭]

将 UIToolBar 放在 UISplitViewController 上方?

UISplitViewController + UISearchController 显示搜索细节

iPad 上的 UITraitCollection 和 UISplitViewController