Разница между UISearchBar и UISearchBarController? - PullRequest
0 голосов
/ 10 июня 2019

Я не совсем понимаю, в чем разница между UISearchBar/UISearchBarDelegate и UISearchBarController.

Прямо сейчас, это то, что я делаю для реализации моей панели поиска:

class SearchViewController: UIViewController {
    @IBOutlet weak var searchBar: UISearchBar!
}

extension SearchViewController: UISearchBarDelegate {

    func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
        searchBar.resignFirstResponder()
        if !searchBar.text!.isEmpty {
            performSegue(withIdentifier: "Search", sender: searchBar.text!)
        }
    }
}

Я видел, как люди онлайн делают такие вещи, как:

let searchController = UISearchController(searchResultsController: nil)

В чем разница между этим и тем, что я делаю?

Ответы [ 2 ]

1 голос
/ 10 июня 2019

Ваш вопрос похож на вопрос "В чем разница между UIView и UIViewController?"

UISearchBar - это представление . У него есть текстовое поле и (опционально) кнопка, и это почти все.

UISearchController - это контроллер , который управляет более абстрактным поведением «поиска». Одна из его задач - контролировать поведение его searchBar, но у него также есть много других заданий, таких как указание searchResultsUpdater, что он должен обновить результаты поиска (потому что текст в панели поиска изменился, или что-то еще ). Он также предоставляет такие свойства, как obscuresBackgroundDuringPresentation и hidesNavigationBarDuringPresentation, чтобы управлять тем, как должны выглядеть представления, когда панель поиска является первым респондентом.

Если вы используете UISearchBar напрямую, вам нужно вручную реализовать все эти вещи, которые UISearchController делает для вас. Это может быть желательно, если вы намерены создать свой собственный вид поиска, которого не обеспечивает UISearchController, но если вы просто хотите использовать в своем приложении простую старую функцию поиска, используйте UISearchController, потому что это сэкономит вам много времени.

0 голосов
/ 10 июня 2019

Примерно.

  • UIxxx - это класс объектов, отображаемых на экране, (UIButton и т. Д.)

  • UIxxxController - это класс объектов, который координирует объекты на экране (получение событий и т. д.)Вы хотите (заполните содержание и т. д.).

Ваш код выглядит так, как будто вы подключили вещи через IB.Код, найденный в Интернете, выглядит так, будто контроллер встроен непосредственно в код, а не через IB;UISearchController создается.

...