Ios UISearchController在点击取消按钮时解除VC
因此,我目前正在尝试用UISearchController替换我的一个项目中的去润滑的searchDisplayController,我遇到了这个问题 如果搜索中没有结果(UITableView为空),则整个ViewController将被解除。当搜索结果不为空时,不会发生这种情况。我不想说明我没有使用UITableViewController。相反,我有一个普通的VC,里面有一个UITableView 以下是我的一些代码:Ios UISearchController在点击取消按钮时解除VC,ios,uitableview,swift,uisearchbar,uisearchcontroller,Ios,Uitableview,Swift,Uisearchbar,Uisearchcontroller,因此,我目前正在尝试用UISearchController替换我的一个项目中的去润滑的searchDisplayController,我遇到了这个问题 如果搜索中没有结果(UITableView为空),则整个ViewController将被解除。当搜索结果不为空时,不会发生这种情况。我不想说明我没有使用UITableViewController。相反,我有一个普通的VC,里面有一个UITableView 以下是我的一些代码: var resultSearchController = UISear
var resultSearchController = UISearchController()
override func viewDidLoad() {
super.viewDidLoad()
self.resultSearchController = ({
let controller = UISearchController(searchResultsController: nil)
controller.searchResultsUpdater = self
controller.dimsBackgroundDuringPresentation = false
controller.searchBar.sizeToFit()
controller.delegate = self
controller.searchBar.delegate = self
self.studentTable.tableHeaderView = controller.searchBar
return controller
})()
....
}
现在,如果我将这个函数添加到等式中,取消按钮总是取消VC
func searchBarCancelButtonClicked(searchBar: UISearchBar) {
resultSearchController.active = false
}
那么,为什么设置
searchController.active=false
会消除VC呢?是因为它与VC使用相同的UITableView吗?我相信旧的searchDisplayController只会在正在使用的视图上显示一个UITableView。如果是这样的话,有没有办法覆盖dismissVC?这也发生在我身上。我解决问题的方法是替换:
resultSearchController.active = false
与
我希望这对您有所帮助:-)2018只想分享我1-2小时调试的成果 我在使用
UISearchController
和UITabBarController
时遇到了多个问题,即:
UINavigationController
导航栏的标题视图中使用UISearchController
,如下问题self.definesPresentationContext = true
问题是我把它放在了一个错误的函数中
记住,这个解决方案解决了我遇到的第一和第二个问题。不多不少
在何处添加该选项?在
视图中显示。就这样 如果不包括行设置active
到false
,并点击取消按钮,会发生什么情况?如果不包括行设置,则仅在没有搜索结果时,如问题所述,将关闭VC。如果它包含在内,则在单击“取消”按钮时,它始终会执行此操作。当没有搜索结果时,它将被取消;当没有搜索结果时,它将被取消;当您单击“取消”按钮时,它将被取消;当您单击“取消”按钮时,它将被取消。有什么想法吗?找到了。可能具有definesPresentationContext=true
的行是关键。此解决方案使searchController保持活动状态,这意味着,如果您在启用下拉刷新的情况下将搜索栏连接到tableview,则刷新指示器将不可见;作为替代解决方法,从superview中删除现有的搜索栏,并创建新的搜索栏并将其附加到tableview。
self.definesPresentationContext = true