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 - 并排或纵向叠加
在 UIViewControllers 和 UISplitViewController 之间导航 [关闭]
将 UIToolBar 放在 UISplitViewController 上方?