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