Как переместить панель поиска в панель навигации с помощью Swift?

Поэтому мне интересно, как я могу переместить панель поиска в своем приложении (которая в настоящее время отображается под панелью навигации в панель навигации.

Прямо сейчас у меня есть функция makeSearchBar(), которую я вызываю в viewDidLoad() для создания панели поиска. Нет раскадровки или файла xib. Я хотел бы избавиться от заголовка на панели навигации и заменить его панелью поиска. Однако, когда я использую методы, указанные в вопросах других пользователей, панель поиска либо исчезает, либо остается там, где она есть.

введите здесь описание изображения

Это код для строки поиска:

override func viewDidLoad() {
        super.viewDidLoad()
        makeSearchBar()
}

func makeSearchBar() {
        searchBar = UISearchBar()
        searchBar.delegate = self
        searchBar.frame = CGRect(x: 0, y: 0, width: screenSize.width, height: 60)

       // searchBar.sizeToFit()

       //TRYING TO ADD TO NAV BAR
       navigationItem.titleView = searchBar

        searchBar.placeholder = "Search"

        view.addSubview(searchBar)
}

Мне также интересно, как сделать верхнюю строку, которая должна иметь информацию о батарее, с другим цветом фона.

Если у вас есть какие-либо предложения, я хотел бы услышать их. Я новичок в iOS и не знаю, что делаю.


person RainyRun    schedule 04.01.2018    source источник


Ответы (2)


Просто попробуйте это:

override func viewDidLoad() {
        super.viewDidLoad()
        makeSearchBar()
}

func makeSearchBar() {
   searchBar = UISearchBar()
    searchBar.sizeToFit()
    navigationItem.titleView = searchBar
}

Надеюсь, это поможет вам.

person Mayur    schedule 05.01.2018

Попробуйте этот код, вызвав presentSearchController в viewDidLoad().

fileprivate func presentSearchController(initialSearchText searchText:String? = nil){
        let searchController = UISearchController(searchResultsController: nil)
        searchController.searchResultsUpdater = self
        searchController.obscuresBackgroundDuringPresentation = false
        searchController.searchBar.text = searchText
        if #available(iOS 11.0, *){
            self.navigationItem.searchController = searchController
            searchController.isActive = true
        }
        else{
            present(searchController, animated: true, completion: nil)
        }
    }
person Syed Zahid Shah    schedule 18.04.2018