Использование UISearchDisplayController с данными, полученными из сети
-
16-09-2019 - |
Вопрос
У меня есть UITableViewController
подкласс, который отображает список предустановленных категорий и извлекает список сайтов / URL-адресов для каждой из них.Я хочу добавить возможность поиска, которая позволяла бы осуществлять поиск по названию сайта.
Что я хочу, так это иметь обычный интерфейс поиска, который запускал бы поток поиска (который извлекал бы и обрабатывал результаты), а затем отображал бы его в таблице.Я изменил свой делегат таблицы, чтобы возвращать пользовательский набор ячеек, если UITableView
не является единственной формой xib (т.е.это представление таблицы поиска):
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"RSSCatalogCell";
if(tableView != self.tableView)
return [searchController tableView:tableView cellForRowAtIndexPath:indexPath];
// ... usual cell initialization for categories
}
Как только мой сетевой поток (созданный из searchBarSearchButtonClicked:
) завершается, он запрашивает таблицу контроллера поиска для перезагрузки данных:
if(searchDisplayController.active)
[searchDisplayController.searchResultsTableView reloadData];
Но я все еще вижу старую таблицу (с целыми каталогами), однако, похоже, она игнорирует касания.
Решение
Хорошо, я решил эту проблему (меня бесит, что когда вы четко пишете вопрос в какую-нибудь публичную группу / форум, вы можете быстро найти свою собственную ошибку, потратив на ее поиски несколько дней).
Проблема была в одном неправильном соединении в XIB, приведенный выше код работает отлично.