How do I set the UISearchController's searchBar to a view that isn't the tableHeaderView or navigationItem.titleview?

10,688

If you have a blank UIView that is placed above the tableview.

let's assume you have an outlet to that blank UIView called searchContainer. Then you can add the search bar of the UISearchController to that view by adding the following line

searchContainer.addSubview(searchController.searchBar)
Share:
10,688
Carlos
Author by

Carlos

HFT Finance, low latency, Equity/FX/Futures, Market Making. Feed handlers, strategy code. Highly scalable real-time web arch for exchanges. C++, Rust, Python/Django/numpy/scikit, Java/Scala/Android/Kotlin, ObjC/Swift, etc. Management, dozens of reports. Side projects in mobile, games. Currently crypto HFT.

Updated on June 20, 2022

Comments

  • Carlos
    Carlos almost 2 years

    I'm trying to keep the search bar in view as the table scrolls. At the moment I'm placing it as the header in a tableview, and it works as it should, but of course the search bar scrolls off screen as you go down the table. I thought I could do this simply modifying this code sample:

    How do I use UISearchController in iOS 8 where the UISearchBar is in my navigation bar and has scope buttons?

    searchController = UISearchController(searchResultsController: nil)
    searchController.searchResultsUpdater = self
    searchController.delegate = self
    searchController.searchBar.delegate = self
    searchController.dimsBackgroundDuringPresentation = false
    searchController.hidesNavigationBarDuringPresentation = false
    tableview.tableHeaderView = searchContoller.searchBar // How to put it elsewhere?
    //Alternative that also works
    navigationItem.titleView = searchController.searchBar
    

    The idea was to take some other view and do

    otherview = searchController.searchBar
    

    For instance an outlet to a UISearchBar, or a blank UIView, or something like that.

    But it doesn't show the searchBar if I do that. It seems to only work as the header view of a table or as a navigationItem.titleView.

    Am I missing something?

  • gadget00
    gadget00 about 8 years
    it worked great for me to add the searchBar in the view controller, but the searchResultsController doesn't trigger each time I try to edit, just the first time. But if I use a barButtonItem to launch the searchBar, the searchResultsController and the actual search triggers every time. Am I missing something here?
  • Leandro Fournier
    Leandro Fournier almost 7 years
    Occasionally you should setup your viewDidLoad method with definesPresentationContext = true and extendedLayoutIncludesOpaqueBars = true to prevent some layout misbehavior.
  • coolcool1994
    coolcool1994 over 6 years
    Is there a way to set the height and width of the searchController.searchBar before/after adding as subview?