Как очистить результат SearchBar и показать полные данные в виде таблицы с помощью Swift? - PullRequest
0 голосов
/ 16 мая 2019

Мой сценарий, я загружаю JSON данные в tableview здесь я поддерживаю две кнопки контроллера сегмента для одного tableview с search-bar.Нажатие кнопки первого сегмента для поиска Я могу получить результат поиска хорошо, и если я нажму кнопку сегмента два, там также будут показаны те же результаты поиска.Поэтому, когда я нажимаю на сегмент один-два, мне нужно очистить результаты поиска и загрузить нормальные данные.Тот же сценарий работает хорошо, когда я нажимаю кнопку закрытия в searchBar.

Мой код

@IBAction func switchTableviewAction(_ sender: UISegmentedControl) {

        switch sender.selectedSegmentIndex {
        case 0:
            print(“one”)
            self.searchResultClear()
            currentTableView = sender.selectedSegmentIndex
            self.tableView.reloadData()

        case 1:
            print(“two”)
            self.searchResultClear()
            currentTableView = sender.selectedSegmentIndex
            self.tableView.reloadData()

        default:
            break;
        }
    }

    // MARK: Search Result Clear working but not clearing result 
    func searchResultClear() {
        //self.searchBar.text = ""
        //self.searchBar.showsCancelButton = false
        //self.filteredLanguages.removeAll()
        //self.tableView.reloadData()
    }

Ответы [ 2 ]

2 голосов
/ 16 мая 2019

Помимо очистки панели поиска, вам также необходимо удалить фильтрацию из источника данных.Под источником данных я имею в виду массив объектов, которые вы показываете в табличном представлении.Вы должны использовать функцию фильтра с фильтром текста.Если вы хотите очистить строку поиска, вам также нужно восстановить исходные данные JSON (нефильтрованные) и затем вызвать reloadData

1 голос
/ 16 мая 2019

Вам просто нужно вызвать метод searchBar textDidChange с пустым текстом при изменении выбора элемента управления сегмента

@IBAction func switchTableviewAction(_ sender: UISegmentedControl) {
    switch sender.selectedSegmentIndex {
    case 0:
        self.searchBar(self.searchBar, textDidChange: "")
    case 1:
        self.searchBar(self.searchBar, textDidChange: "")
    default:
        break;
    }
}
...