I'm having problem with the UISearchController where if I have text in the searchbar and dismiss the VC it's in, the searchBar won't go away and just remain on screen overlapping everything in other VCs. Then it crashes if you hit the cancel button.
Have tried a few solutions on SO but none have worked. :/
self.resultSearchController = ({
let controller = UISearchController(searchResultsController: nil)
controller.searchResultsUpdater = self
controller.dimsBackgroundDuringPresentation = false
controller.hidesNavigationBarDuringPresentation = false
controller.searchBar.sizeToFit()
controller.searchBar.searchBarStyle = UISearchBarStyle.Minimal
controller.searchBar.barTintColor = UIColor(red: 243/255, green: 243/255, blue: 243/255, alpha: 1)
controller.searchBar.tintColor = UIColor.blackColor()
controller.definesPresentationContext = true
controller.edgesForExtendedLayout = UIRectEdge.None
self.tableView.contentInset = UIEdgeInsetsMake(64, 0, 0, 0)
self.tableView.tableHeaderView = controller.searchBar
return controller
})()
Really appreciate any help on this!
UPDATE: So I kinda found a not-so-great solution which is to set .active = false in viewWillDisappear. However, the problem is there a searchBar artifact will show on the next/previous VC for a second before completely disappearing.
Change the following:
controller.definesPresentationContext = true
to
self.definesPresentationContext = true
The setting also preserves the state of the search bar when you push and pop a view controller on and off the navigation stack.
You can read about the definesPresentationContext
setting on Apple's Documentation on UIViewController.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With