Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Adding SearchBar to NavigationBar Objective-C iOS 9

I think the title is pretty self explanitory. I have a tableView embedded in a navigation controller and want to add a search bar to the navigation bar. I think something changed in iOS 9 regarding searchbar controller things so keep in mind this has to be for iOS 9. This is what i have. No doubt it is wrong.

 UISearchController *searchController = [[UISearchController alloc]init];
self.searchController.searchBar.barTintColor = [UIColor whiteColor];
[self.navigationController addChildViewController:searchController];
like image 771
Mark Bourke Avatar asked Nov 27 '22 05:11

Mark Bourke


2 Answers

Add it via storyboard. Add the search bar in the view controller scene like exit and first responder are added and after that just give the titleView of navigation item to the search bar.

Check this image for reference

like image 139
Bhavuk Jain Avatar answered Dec 07 '22 00:12

Bhavuk Jain


//This method has deprecated in ios 8. So, before ios 8 you can use this.

UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectZero];
[searchBar sizeToFit];

UISearchDisplayController *searchDisplayController= [[UISearchDisplayController alloc] initWithSearchBar:searchBar
                                    contentsController:self];
self.searchDisplayController.searchResultsDelegate = self;
self.searchDisplayController.searchResultsDataSource = self;
self.searchDisplayController.delegate = self;
self.navigationItem.titleView = searchDisplayController.searchBar;

// For ios8/ios9 use the following code

UISearchController *searchController = [[UISearchController alloc] initWithSearchResultsController:self];
// Use the current view controller to update the search results.
searchController.searchResultsUpdater = self;
// Install the search bar as the table header.
self.navigationItem.titleView = searchController.searchBar;
// It is usually good to set the presentation context.
self.definesPresentationContext = YES;
like image 41
Jamil Avatar answered Dec 07 '22 01:12

Jamil