2015-05-05 4 views
5

Итак, я в настоящее время пытаюсь заменить лишенный searchDisplayController в одном из моих проектов с помощью UISearchController, и я столкнулся с этой проблемой.UISearchController отклоняет VC при нажатии кнопки отмены

Если результатов поиска нет (UITableView пуст), весь ViewController отклоняется. Этого не происходит, когда результаты поиска не пусты. Я не хочу, чтобы я понял, что я не использую UITableViewController. Вместо этого у меня есть обычный VC с UITableView в нем.

Вот некоторые из моего кода:

var resultSearchController = UISearchController() 
override func viewDidLoad() { 
    super.viewDidLoad() 
    self.resultSearchController = ({ 
     let controller = UISearchController(searchResultsController: nil) 
     controller.searchResultsUpdater = self 
     controller.dimsBackgroundDuringPresentation = false 
     controller.searchBar.sizeToFit() 
     controller.delegate = self 
     controller.searchBar.delegate = self 
     self.studentTable.tableHeaderView = controller.searchBar 
     return controller 
    })() 
    .... 
} 

Теперь, если добавить эту функцию в уравнение кнопка отмены всегда увольняет ВК.

func searchBarCancelButtonClicked(searchBar: UISearchBar) { 
    resultSearchController.active = false 
} 

Так почему же именно установив searchController.active = false уволить VC? Это потому, что он использует тот же UITableView, что и VC? Я считаю, что старый searchDisplayController просто отобразит UITableView над используемым. Если это так, то есть способ переопределить функцию rejectVC?

+0

Что происходит, когда вы не включают в себя установку 'active' в строку 'false', и вы нажмете кнопку отмены? – shim

+0

Когда он не включен, он отклоняет VC только в том случае, если нет результатов поиска по запросу. Если он включен, он всегда делает это, когда нажата кнопка отмены. – boidkan

+0

Он отклоняет, когда нет результатов поиска, или отклоняется, когда нет результатов поиска, и вы нажимаете отменить? – shim

ответ

2

Это также происходит со мной. Путь я это решаю является замена:

resultSearchController.active = false 

с

resultSearchController.searchBar.text = "" 
    resultSearchController.searchBar.resignFirstResponder() 

Я надеюсь, что это помогает :-)

+0

Это решение поддерживает поиск по-прежнему, что означает, что если вы привязали SearchBar к представлению таблицы с включенным отключением-обновлением, индикатор обновления не будет виден; Как альтернативное обходное решение, удалите существующий searchBar из супервизора и создайте & присоедините новый к tableview. – Delorean

Смежные вопросы