Reputation: 63
I have a customized UISearchBar, when an user click on the searchBar, I want to show an additional buttons. So, I'm using scopeButtonTitles property to display the additional buttons. But, it's not appearing on the UISearchBar.
customSearchController = CustomSearchController(searchResultsController: self, searchBarFrame: CGRect(x: 0.0, y: 0.0, width: tableView.frame.size.width, height: 50.0), searchBarFont: UIFont.systemFont(ofSize: 16.0), searchBarTextColor: UIColor.white, searchBarTintColor: UIColor.primaryBlue())
customSearchController.hidesNavigationBarDuringPresentation = false
customSearchController.dimsBackgroundDuringPresentation = false
customSearchController.customSearchBar.placeholder = NSLocalizedString("Search", comment: "Search")
customSearchController.customSearchBar.accessibilityLabel = customSearchController.searchBar.placeholder
//Scope Buttons
customSearchController.customSearchBar.scopeButtonTitles = [NSLocalizedString("List", comment: "List"), NSLocalizedString("Map", comment: "Map")]
If I'm not using customize UISearchBar, it's working fine. the actual problem is when I'm going for customize UISearchBar.
Upvotes: 1
Views: 1326
Reputation: 72440
Set the showsScopeBar
property of UISearchBar
to true
to the show the scopeBar.
customSearchController.customSearchBar.showsScopeBar = true
Edit: For that you can use delegate method searchBarTextDidBeginEditing
and show the scopebar.
func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) {
customSearchController.customSearchBar.showsScopeBar = true
//set the frame so it will show scope bar properly.
}
Now if you want to hide the scoprBar after search then you can use searchBarCancelButtonClicked
to hide the scope bar.
func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
customSearchController.customSearchBar.showsScopeBar = false
//set the frame again
}
Upvotes: 2