Search code examples
ioshidesearchbar

Hide search bar of search display controller


I dragged a search bar and display controller to a view controller and placed it at the bottom of the outline.

I then set it to display in navigation bar with following line in viewdidload. All that works.

self.searchDisplayController.displaysSearchBarInNavigationBar = true;

However, I want to hide it initially, and the following line in vewdidload is not having any effect.

self.searchDisplayController.searchBar.hidden = true;

Can anyone suggest what to do?

Thanks in advance for any suggestions.

EDIT:

I think I have figured out that you cannot have searchBar.hidden = true and displaysSearchBarInNavigationBar at the same time. Which is fine by me as I only want one or the other. So I tried separating the two cases.

First in view did load, I put

self.searchDisplayController.searchBar.hidden = true;

This does work if by itself.

Then I have a search button wired to an action method as follows:

 - (IBAction)searchButtonPressed:(id)sender {
    NSLog(@"search button pressed");
    self.searchDisplayController.searchBar.hidden = false;
    self.searchDisplayController.displaysSearchBarInNavigationBar = true;
    self.searchDisplayController.searchBar.showsCancelButton = YES;
}

However, while I can see from the log that the method is called, it does not unhide the search bar. Perhaps it is delegate issue but still looking for solutions.


Solution

  • Do it like this

    1. Add an outlet to your searchBar from your Storyboard
    2. Then you can use the outlet identifier to hide the searchBar by adding the following row

    searchBar.hidden = true