Как настроить область действия searchBar

Поэтому я искал везде, но не могу найти ответ на этот вопрос. У меня есть настройка UISearchBar searchBar, которая фильтрует мои данные. Я наткнулся на функционал прицела, но создал свои кнопки прицела. Итак, мой вопрос: как мне связать эти кнопки, которые я сделал, чтобы они могли выполнять то же самое, что и области UISearchBar?


person anEmptyByte    schedule 01.04.2017    source источник


Ответы (1)


Кнопки прицела больше удобны, чем что-либо еще. Они не изменяют область поиска автоматически. Это то, что вы должны сделать в ответ на изменение области действия пользователем.

Обычно вы не делаете кнопки самостоятельно. Вы устанавливаете заголовки для кнопок в свойстве scopeButtonTitles панели поиска, например:

self.searchController.searchBar.scopeButtonTitles = ["Scope 1", "Scope 2"]

а затем в делегате UISearchBarDelegate реализовать

func searchBar(_ searchBar: UISearchBar, selectedScopeButtonIndexDidChange selectedScope: Int)

действовать по выбору пользователя.

Но если есть веская причина сделать свои собственные кнопки, вы просто сделаете все сами.

person Gary Makin    schedule 01.04.2017
comment
Спасибо за ответ, я это прекрасно понимаю, но у меня уже есть полностью настроенные кнопки с анимацией и всем, что я хочу использовать вместо кнопок, которые поставляются при использовании self.searchController.searBar.scopeButtonTitles. - person anEmptyByte; 01.04.2017
comment
Если бы вы могли заставить свои кнопки появляться в нужном месте, то это было бы решено для вас? - person Gary Makin; 01.04.2017
comment
Это больше для того, чтобы заставить мои кнопки достичь того, что могут кнопки области действия. - person anEmptyByte; 01.04.2017
comment
На самом деле они ничего не достигают, кроме представления пользовательского интерфейса. В моем коде, когда вызывается searchBar(_:, selectedScopeButtonIndexDidChange:), я изменяю поиск, который я выполняю в базе данных. - person Gary Makin; 01.04.2017
comment
Из документации Apple к UISearchBarDelegate: объект UISearchBar предоставляет пользовательский интерфейс для поля поиска на панели, но за реализацию действий при нажатии кнопок отвечает приложение. Как минимум делегат должен выполнять фактический поиск, когда текст вводится в текстовое поле. - person Gary Makin; 01.04.2017
comment
Можно ли привести очень краткий пример? Мне немного трудно понять, как именно все подключить - person anEmptyByte; 01.04.2017
comment
raywenderlich.com/113772/uisearchcontroller-tutorial – довольно хорошее руководство по использованию UISearchControllers с вид таблицы. Там есть раздел о добавлении панели области действия, и вы обнаружите, что это просто приводит к одному дополнительному вызову делегата searchBar(_:, selectedScopeButtonIndexDidChange:), где работа по изменению области действия выполняется. Компоненты пользовательского интерфейса не выполняют никакой работы. Это полностью зависит от вас, чтобы реализовать изменение области действия, чтобы сделать что-то значимое. - person Gary Makin; 01.04.2017
comment
Хорошо, спасибо за помощь, я не знал о вызове дополнительного делегата. - person anEmptyByte; 01.04.2017
comment
поэтому я перешел по ссылке, но достиг стены, есть ли шанс, что вы можете помочь? stackoverflow.com/questions/43153579/ - person anEmptyByte; 01.04.2017