Я пытаюсь настроить контроллер дисплея поиска для обработки асинхронных результатов от веб-службы. У меня есть основные элементы, но я столкнулся с действительно странной проблемой, которую я не могу понять.
Похоже, что для настройки контроллера дисплея поиска для асинхронного режима вам действительно нужно сделать две вещи:
Я пытаюсь настроить контроллер дисплея поиска для обработки асинхронных результатов от веб-службы. У меня есть основные элементы, но я столкнулся с действительно странной проблемой, которую я не могу понять.
Похоже, что для настройки контроллера дисплея поиска для асинхронного режима вам действительно нужно сделать две вещи:
Я пытаюсь настроить контроллер дисплея поиска для обработки асинхронных результатов от веб-службы. У меня есть основные элементы, но я столкнулся с действительно странной проблемой, которую я не могу понять.
Похоже, что для настройки контроллера дисплея поиска для асинхронного режима вам действительно нужно сделать две вещи:
Похоже, что для настройки контроллера дисплея поиска для асинхронного режима вам действительно нужно сделать две вещи:
Похоже, что для настройки контроллера дисплея поиска для асинхронного режима вам действительно нужно сделать две вещи:
Я делаю и то, и другое, но вижу, что контроллер отображения поиска перезагружает таблицу по первому символу, набранному в строке поиска, хотя я возвращаю НЕТ согласно №1. Он не перезагружается при вводе последующих символов.
Итак, мой вопрос: как мне предотвратить попытки контроллера отображения поиска перезагрузить таблицу, пока пользователь печатает? (в частности, для первого введенного символа)
Я видел, как эта проблема упоминалась как часть нескольких других вопросов, но я не видел прямого ответа на нее. Я хотел бы понять, что происходит или что я делаю не так, прежде чем прибегать к кучке искажений пользовательского интерфейса, чтобы обойти это.
Вот небольшой фрагмент моего кода, чтобы показать проблему. Когда я запускаю это и набираю "abcde" в строке поиска, после того, как я наберу «a», результаты будут отображаться как «a # 0», «a # 2» и т. д. Они не обновятся снова, пока я не нажму кнопку поиска, тогда вы увидите «abcde # 0», «abcde # 1» и т. д. Конечно, желаемый результат - ничего не происходит, пока я не нажму кнопку поиска.
#pragma mark -
#pragma mark UISearchDisplayController Delegate Methods
- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString {
return NO;
}
- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchScope:(NSInteger)searchOption {
return NO;
}
#pragma mark -
#pragma mark UISearchBarDelegate Methods
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar {
[self.searchDisplayController.searchResultsTableView reloadData];
}
#pragma mark -
#pragma mark Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return 20;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
cell.textLabel.text = [self.searchDisplayController.searchBar.text stringByAppendingFormat:@" #%d", indexPath.row];
return cell;
}
Спасибо! (кстати, это мой первый вопрос, который задают здесь - дайте мне знать, если я пропущу какие-либо правила этикета:)