Подключите UISearchController к UISearchBar, не встраивая панель поиска в табличное представление или в панель навигации - PullRequest
0 голосов
/ 20 января 2019

Прежде всего, извините, если этот вопрос звучит слишком глупо (не стесняйтесь его пропускать).

В моем приложении мне нужно создать область поиска: в основном я должен создать панель поиска, и, когда пользователь нажимает на некоторые символы, я показываю таблицу с результатами.

В моем основном ViewController я сделал следующее:

var resultSearchController:UISearchController? = nil

    override func viewDidLoad() {

         super.viewDidLoad()

         // my results table is 'SearchTable' in my storyboard
         let searchTable = storyboard!.instantiateViewController(withIdentifier: "SearchTable") as! SearchTable
         resultSearchController = UISearchController(searchResultsController: searchTable)
         resultSearchController?.searchResultsUpdater = searchTable as? UISearchResultsUpdating

         resultSearchController?.hidesNavigationBarDuringPresentation = false
         resultSearchController?.dimsBackgroundDuringPresentation = true
         definesPresentationContext = true

Конечно, все работает нормально, если добавить следующее:

let searchBar = resultSearchController!.searchBar
searchBar.sizeToFit()
searchBar.placeholder = "Search..."
// this line embeds the search bar in the navigation bar
navigationItem.titleView = resultSearchController?.searchBar

UISearchController создает UISearchBar и устанавливает для него свойство searchBar контроллера поиска.

Проблема в том, что я хочу другую вещь, а именно:

  1. строка поиска должна не быть встроенной в панель навигации;
  2. строка поиска должна не быть встроенной в само представление таблицы;

Моя панель поиска должна быть всегда видимой, зафиксированной и размещенной прямо под панелью навигации: я просто вставил UISearchBar в свою раскадровку с ее ограничениями и подключил ее к контроллеру представления как IBOutlet.

Но на данный момент я не знаю, как связать мою панель поиска с resultSearchController. Как я мог сделать? Возможно ли это?

1 Ответ

0 голосов
/ 20 января 2019

Вы выполнили всю тяжелую работу, и то, что вы упустили, довольно тривиально по сравнению с тем, что вы сделали.

По сути, вы должны добавить UISearchBar resultSearchController!.searchBar в качестве подпредставления к представлению, используя код.Я не думаю, что это было бы возможно с раскадровкой, это могло быть тем, что смутило вас.

...