Я хочу добавить кнопку «фильтр» или «сортировать» рядом с searchBar
внутри UISearchController
. Я уже пытался добавить UIButton
и searchbar
в UIView
и установить это как мой UITableView tableView.tableHeaderView
. Это не работает, потому что tableView.tableHeaderView
get возвращается к UISearchBar
только при отклонении контроллера. Вот пример того, как я хочу это посмотреть: Добавить кнопку фильтра для UISearchController
ответ
Я бы потерял контроллер поиска, он не предлагает никаких функций, которые вы действительно хотите, а дополнительный вид/VC, который вам нужно предоставить, добавляет сложность/код дублирования.
В существующем виде таблиц уже есть все, что вам нужно, поскольку оно имеет источник данных. Это либо массив, либо FRC. Если это массив, вы можете заменить содержимое массива на ваше отфильтрованное содержимое, и если это FRC, вы можете изменить предикат.
Примечание: в массиве имеется 2 ссылки на массивы, 1 указывает на массив, содержащий все ваши нефильтрованные элементы, а другой, который первоначально является ссылкой на тот же массив, - вторая ссылка используется для заполнения табличного представления. Затем, когда вы фильтруете, вы создаете новый массив только с фильтрованными элементами и указываете на него вторую ссылку.
Вместо реализации метода делегирования контроллера поиска вы применяете методы делегирования панели поиска и используете это для запуска фильтрации и сброса.
Теперь вы избавились от контроллера поиска, вы также не переключаете представления таблиц, поэтому у вас есть только 1 ТВ и 1 вид заголовка. Теперь нет причин менять вид заголовка, и все просто работает.
Я не понимаю, что я понял. Я не хочу знать, как фильтровать tableView, а как управлять кнопкой фильтра рядом с панелью поиска (в идеале в Search Controller) – smnk
Вот почему я спросил о потере контроллера поиска. Проблема заключается в том, что контроллер поиска представляет другое представление, поэтому заголовок настроен по-разному. Вы должны просто настроить другой заголовок на другом представлении. Я считаю, что поисковые контроллеры просто добавляют сложность для небольшой реальной выгоды. Если у вас только 1 вид, у вас есть 1 заголовок, который прост в настройке и управление фокусом тоже просто. – Wain
Я пытался много, как это настроить SearchBar, но ничего не помогло мне наконец нашел способ полного заполнения Вашего требования
let mysearchController = UISearchController(searchResultsController: nil)
mysearchController.searchBar.showsCancelButton = true
mysearchController.searchBar.barStyle = UIBarStyle.Black
for var subView1 in mysearchController.searchBar.subviews{
for var subView2 in subView1.subviews{
if subView2 .isKindOfClass(UIButton){
let customizedCancelButton:UIButton = subView2 as! UIButton
customizedCancelButton.enabled = true
customizedCancelButton.setTitle("", forState: UIControlState.Normal)
let image1 = UIImage(named: "Sort")
customizedCancelButton.setBackgroundImage(image1, forState: UIControlState.Normal)
customizedCancelButton.addTarget(self, action: "sort", forControlEvents: UIControlEvents.TouchUpInside)
}
}
}
выше кода очень прост для понимания.
func sort(){
print("sort button fired!!!")
}
Вместо настройки UISearchBar и усложнять, вы можете сохранить его простым, добавив собственную кнопку рядом SearchBar.
комплект Нет в Показывает кнопку отмены вариант для SearchBar с помощью
self.searchBar.showsCancelButton = true
ИЛИ
Снять отметку Показывает кнопку отмены вариант для SearchBar в раскадровке
Добавить свой собственная кнопка b eside SearchBar, как показано ниже
И затем, соответственно, добавить IBAction к кнопке и выполнить свои действия в нем.
Также в идеальном случае не рекомендуется размещать это представление в заголовке таблицы. Будет лучше, если он находится выше таблицы, а затем Apple.
я мог бы создать фильтр поиска с помощью нескольких строк кода. Я надеюсь, что это помогает.
* Я выбрал кнопку закладки, чтобы применить значок фильтра; потому что я уже использовал кнопку отмены для пользовательских действий.
Во-первых, у вас есть делегат searchBar для обработки нажатия кнопки click. Затем вы должны установить свойства, как показано ниже. Если вы хотите указать пользовательскую позицию (позиция по умолчанию - правая), вам нужно установить настройку настройки.
searchController.searchBar.delegate = self
searchController.searchBar.showsBookmarkButton = true
searchController.searchBar.setImage(UIImage(named: "Sort.png"), for: .bookmark, state: .normal)
// MARK: You may change position of bookmark button.
//searchController.searchBar.setPositionAdjustment(UIOffset(horizontal: 0, vertical: 0), for: .bookmark)
Затем, переопределить поискBarBookmarkButtonClicked функция внутри вашего VC. Вы можете обработать событие click внутри этого метода.
func searchBarBookmarkButtonClicked(_ searchBar: UISearchBar) { //showAlert, presentVC or whatever you want here }
Кроме того, если вы хотите скрыть кнопку закладки во время поиска контроллер активен, необходимо применять контроль внутри метода updateSearchResults.
if searchController.isActive {
searchController.searchBar.showsBookmarkButton = false
} else {
searchController.searchBar.showsBookmarkButton = true
}
Отличное решение! Благодарю. – Alessign
- 1. добавить пользовательскую кнопку в строке фильтра фильтра сетки
- 2. didSelectRowAtIndexPath indexpath после фильтра UISearchController - Swift
- 3. Реагировать рассчитывает кнопку фильтра
- 4. Добавить условное значение для фильтра
- 5. Добавить кнопку для просмотра
- 6. Добавить кнопку для просмотраFragment
- 7. Добавить кнопку для охвата
- 8. Установить действие для отмены кнопки внутри uisearchController
- 9. UISearchController для TableView
- 10. Пользовательская ячейка для UISearchController
- 11. Как добавить кнопку фильтра к заголовку ui-grid
- 12. Как добавить кнопку фильтра и сортировки в ячейку?
- 13. Создать кнопку фильтра SQL-запрос
- 14. Отключить кнопку на выходе фильтра
- 15. Не удается добавить UISearchController в UIViewController
- 16. Добавить UISearchController на панели навигации IOS
- 17. Как добавить функциональность фильтра?
- 18. Добавить Disclosure кнопку для MKPointAnnotation
- 19. FPDF добавить кнопку для возврата
- 20. Добавить кнопку помощи для формирования
- 21. добавить кнопку для переключения браузера
- 22. JQuery добавить кнопку для Div
- 23. Добавить навигационную кнопку для отображения
- 24. Кнопка отмены в UISearchController
- 25. Использование UISearchController для поиска TableView
- 26. Условно-бесплатная UISearchController для iOS8 +
- 27. Как добавить кнопки с областью в UISearchController, встроенные в UINavigationController
- 28. SWRevealViewController & UISearchController --- Tableview gone
- 29. Добавить атрибут для фильтра AND condition magento
- 30. Backand - добавить два фильтра для запроса GET
есть конкретная причина, вы используете поисковую контроллер? вы не можете использовать его и напрямую фильтровать представление таблицы? – Wain
Причина чисто оптическая. Так что мне было бы хорошо с чем-нибудь – smnk
. Я должен быть более конкретным, у вас уже есть табличный вид, вы счастливы просто отфильтровать его или используете совершенно другое представление, чтобы представить результаты поиска/хотите, чтобы функция наложения контроллера поиска? – Wain