Я использую UISearchBar UISearchController в заголовке UITableView. Мой поиск работает нормально, когда я ввожу какой-либо текст в поле панели поиска, вызывается все соответствующие методы, и в представлении таблицы отображаются правильные результаты поиска, как ожидалось.Текст строки поиска UISearchController исчезает при потере фокуса
Проблема возникает, когда я хочу использовать один из результатов, чтобы что-то сделать с ним. Как только я нажимаю на одну из ячеек таблицы, поле в строке поиска становится пустым. Поскольку текст поиска теперь пуст, результаты поиска обновляются, и представление таблицы перезагружается с нулевыми результатами. Таким образом, кран на ячейке таблицы ничего не делает, потому что ячейка таблицы больше не существует.
Я могу обойти эту проблему, обновив мой метод updateSearchResultsForSearchController:
, чтобы не обновлять результаты поиска, когда строка поиска пуста. И это прекрасно работает. Но в любом случае, я все еще хочу, чтобы текст поиска оставался в поле поиска, и это суть моего вопроса ...
Почему мой текст поиска исчезает из поля поиска и как я могу предотвратить поле поиска становится пустым, когда я нахожусь в другом месте?
Вот как настроить панель поиска и поиска контроллера:
- (void)viewDidLoad {
[super viewDidLoad];
searcher = [[UISearchController alloc] initWithSearchResultsController:nil];
searcher.searchResultsUpdater = self;
searcher.delegate = self;
searcher.definesPresentationContext = YES;
resultsTable.tableHeaderView = searcher.searchBar;
EDIT: Я заметил, что вид ячеек таблицы серым цветом, а панель поиска имеет фокус. Поэтому я считаю, что контроллер поиска захватывает все касания и, возможно, обрабатывает их как действия «отменить». Если да, то как я могу остановить его отмену таким образом?
Посмотрите на https://developer.apple.com/reference/uikit/uisearchcontroller/1618656-obscuresbackgroundduringpresenta > "Если вы используете один и тот же контроллер представления для отображения содержимого для поиска и результаты поиска, рекомендуется установить для этого свойства значение false. Значение по умолчанию этого свойства равно true. " –
Да, вы правы - это решило мою проблему. Я нашел его в то же самое время, когда вы разместили его. Я чувствую себя немного глупо. Во всяком случае, я опубликовал ее как ответ сейчас, если это поможет кому-то еще позже. –