Show search bar in navigation bar without scrolling on iOS 11 Show search bar in navigation bar without scrolling on iOS 11 ios ios

Show search bar in navigation bar without scrolling on iOS 11


The following makes the search bar visible at first, then allows it to hide when scrolling:

override func viewWillAppear(_ animated: Bool) {    super.viewWillAppear(animated)    if #available(iOS 11.0, *) {        navigationItem.hidesSearchBarWhenScrolling = false    }}override func viewDidAppear(_ animated: Bool) {    super.viewDidAppear(animated)    if #available(iOS 11.0, *) {        navigationItem.hidesSearchBarWhenScrolling = true    }}

Using isActive didn't do what I wanted, it makes the search bar active (showing cancel button, etc.), when all I want is for it to be visible.


You can set the property isActive to true after adding the searchController to the navigationItem.

Just like this:

override func viewDidAppear(_ animated: Bool) {    super.viewDidAppear(animated)    searchController.isActive = true}


For me it worked after adding following lines in viewDidLoad() method:

navigationController?.navigationBar.prefersLargeTitles = truenavigationController!.navigationBar.sizeToFit()