UISearchController woes

Viewed 119

I'm having an issue with UISearchController. There have been some reports of erratic behavior in iOS 11, but none of the suggestions have fixed my problem.

The navigation bar is hidden in my app so I just want to place the search bar between two buttons on the main screen. I put UIView in the storyboard to serve as the superview for the search bar. When activated the results controller is a straight UITableViewController.

Everything is in-place when the app launches. When I access the search bar it just to the top of the screen, leaving it's parent view behind. Everything functions ok, but when I hide the table view, the search bar actual goes a bit lower than it was when it started. Here's the setup code:

    let locationSearchTable = storyboard!.instantiateViewController(withIdentifier: "LocationSearchTable") as! LocationSearchTable
    searchController = UISearchController(searchResultsController: locationSearchTable)
    searchController.searchResultsUpdater = locationSearchTable
    searchController.delegate = self

    locationSearchTable.mapView = mapView
    locationSearchTable.handleMapSearchDelegate = self
    locationTableController = locationSearchTable

    let searchBar = searchController!.searchBar
    //searchBar.searchBarStyle = UISearchBarStyle.prominent
    searchBar.sizeToFit()
    searchBar.placeholder = "Search..."

    searchViewHolder.addSubview(searchBar)
    searchBar.frame = searchViewHolder.bounds
    searchBar.autoresizingMask = [.flexibleWidth, .flexibleHeight]
    searchController.dimsBackgroundDuringPresentation = true
    definesPresentationContext = false

I have tried many, many approaches to fixing this. I'm wondering if I misunderstood an earlier suggestion. Any advice is welcome.

1 Answers

I'd the same issue. If your navbar is not translucent try to put this in viewDidLoad:

 extendedLayoutIncludesOpaqueBars = true
Related