Как видно из названия, в моем коде при поиске в моем приложении это происходит просто:
stations = [barcelona, madrid, valencia, badajoz]
когда я набираю "ba", оно показывает:
mysearch = [barcelona, badajoz]
Я хочу выбрать badajoz, поэтому программа возвращает эту строку в положение 1, когда на станциях номер позиции 3.
Есть идеи?
PD: код, связанный с поиском
- (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope
{
NSPredicate *resultPredicate = [NSPredicate
predicateWithFormat:@"SELF contains[cd] %@",
searchText];
self.searchResults = [self.allItems filteredArrayUsingPredicate:resultPredicate];
}
#pragma mark - UISearchDisplayController delegate methods
-(BOOL)searchDisplayController:(UISearchDisplayController *)controller
shouldReloadTableForSearchString:(NSString *)searchString
{
[self filterContentForSearchText:searchString
scope:[[self.searchDisplayController.searchBar scopeButtonTitles]
objectAtIndex:[self.searchDisplayController.searchBar
selectedScopeButtonIndex]]];
return YES;
}
- (BOOL)searchDisplayController:(UISearchDisplayController *)controller
shouldReloadTableForSearchScope:(NSInteger)searchOption
{
[self filterContentForSearchText:[self.searchDisplayController.searchBar text]
scope:[[self.searchDisplayController.searchBar scopeButtonTitles]
objectAtIndex:searchOption]];
return YES;
}
РЕДАКТИРОВАТЬ: я редактировал мой код, используя ответ ниже - (void) tableView: (UITableView *) tableView didSelectRowAtIndexPath: (NSIndexPath *) indexPath {NSLog (@ "Pushing ...");NSUInteger row = [indexPath row];// старый код перед просмотром поиска
//index from the search
id searchResult = [searchResults objectAtIndex:row];
int indexForResult = [ListaEstaciones indexOfObject:searchResult];
//more stuff
РЕДАКТИРОВАТЬ: Теперь это работает для следующих случаев: со списком со всеми элементами он хорошо ищет, когда я начинаю искать, он работает хорошо, проблема в том, что когдапрекратить поиск, и я выбираю строку из списка всех элементов, в которых он до сих пор использует индекс индекса списка искомых элементов, это происходит потому, что в этом коде я изменяю логическую переменную поиска на YES:
- (void)filterContentForSearchText:(NSString*)searchText
scope:(NSString*)scope
{
NSPredicate *resultPredicate = [NSPredicate
predicateWithFormat:@"SELF contains[cd] %@",
searchText];
self.searchResults = [self.allItems filteredArrayUsingPredicate:resultPredicate];
searching = YES;
Но я не знаю, где изменить поисковое значение на NO, когда я вернусь к списку всех значений.Какие-либо предложения?Большое спасибо.РЕДАКТИРОВАТЬ 2: Решено с этим сайтом http://engineeringtheworld.wordpress.com/2011/04/11/detecting-when-clear-is-clicked-in-uisearchbar-x-button/