it-swarm.com.ru

Получить панель поиска на панели навигации в Swift

Итак, я попробовал все, пытаясь вставить панель поиска в панель навигации в Swift. Но, к сожалению, я не получил это работает, просто пока ... 

Для тех из вас, кто не знает, о чем я говорю, я пытаюсь сделать что-то подобное

enter image description here

Обратите внимание на панель поиска на панели навигации. Итак, вот что я сейчас использую 

self.searchDisplayController?.displaysSearchBarInNavigationBar = true

Я высветил это в своей переменной viewDidLoad, а затем, когда я загружаю приложение, которое мне представляется, просто пустую панель навигации .... :( Есть идеи?

45
user302975

Попробуй это

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 на панель поиска розетки.

63
Leo
    // 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
46
antonio081014

На ваш взгляд контроллер:

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)
14
iAmcR
    let searchBar = UISearchBar()
    searchBar.sizeToFit()
    searchBar.placeholder = ""
    self.navigationController?.navigationBar.topItem?.titleView = searchBar
1
luhuiya
func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {

    searchBar.endEditing(true)
    searchBar.text = nil
    print("## search btn clicked : \(searchBar.text ?? "")")
} 
0
Sami Youssef