Сделать панель поиска в панель навигации в Swift
поэтому я пробовал все, пытаясь получить панель поиска в навигационную панель в Swift. Но, к сожалению, у меня пока не получается...
для тех из вас, кто не знает о чем я говорю, я пытаюсь сделать что-то подобное
обратите внимание на строку поиска в панели навигации. Итак, вот что я сейчас использую
self.searchDisplayController?.displaysSearchBarInNavigationBar = true
Я выскочил, что в моем viewDidLoad
, а затем, когда я загружаю приложение, которое мне представлено, просто пустая панель навигации.... : (Есть идеи?
5 ответов
попробуй такое
var leftNavBarButton = UIBarButtonItem(customView:Yoursearchbar)
self.navigationItem.leftBarButtonItem = leftNavBarButton
обновление
вы держите ленивый UISearchBar собственность
lazy var searchBar:UISearchBar = UISearchBar(frame: CGRectMake(0, 0, 200, 20))
в viewDidLoad
searchBar.placeholder = "Your placeholder"
var leftNavBarButton = UIBarButtonItem(customView:searchBar)
self.navigationItem.leftBarButtonItem = leftNavBarButton
Если вы хотите использовать раскадровку просто перетащите панель поиска в качестве выхода,а затем замените свойство lazy на панель поиска выхода
// create the search bar programatically since you won't be
// able to drag one onto the navigation bar
searchBar = UISearchBar()
searchBar.sizeToFit()
// the UIViewController comes with a navigationItem property
// this will automatically be initialized for you if when the
// view controller is added to a navigation controller's stack
// you just need to set the titleView to be the search bar
navigationItem.titleView = searchBar
в вашем контроллере вида:
lazy var searchBar = UISearchBar(frame: CGRectZero)
override func viewDidLoad() {
super.viewDidLoad()
searchBar.placeholder = "Search"
navigationItem.titleView = searchBar
}
сделать это таким образом, установив navigationItem.titleView, панель поиска автоматически центрируется на устройствах iPhone и iPad. Примечание: только протестировано с v8.4 и v9.0
для SWIFT 3
lazy var searchBar = UISearchBar(frame: CGRect.zero)
func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
searchBar.endEditing(true)
searchBar.text = nil
print("## search btn clicked : \(searchBar.text ?? "")")
}
let searchBar = UISearchBar()
searchBar.sizeToFit()
searchBar.placeholder = ""
self.navigationController?.navigationBar.topItem?.titleView = searchBar