1

У меня есть NSMutableArray, который состоит из текстовых полей. Я хочу загрузить их, когда пользователь вводит внутри UISearchBar. Вначале я не хочу загружать все текстовые поля, прежде чем пользователь начнет вводить текст. Только пользователь, начинающий вводить предложение первой буквы, должен быть загружен. Любая помощь?IOS: Автозаполнение поиска с использованием UISearchbar

ответ

3

Есть много логики, но я кладу логика здесь:

Take Two NSMutableArray и добавить один массив в другой массив в ViewDidLoad способом, таким как,

self.listOfTemArray = [[NSMutableArray alloc] init]; // array no - 1 
self.ItemOfMainArray = [[NSMutableArray alloc] initWithObjects:@"YorArrayList", nil]; // array no - 2 

[self.listOfTemArray addObjectsFromArray:self.ItemOfMainArray]; // add 2array to 1 array 

и писать следующее делегат Метод UISearchBar

- (void)searchBar:(UISearchBar *)theSearchBar textDidChange:(NSString *)searchText 
{ 
     NSString *name = @""; 
     NSString *firstLetter = @""; 

    if (self.listOfTemArray.count > 0) 
     [self.listOfTemArray removeAllObjects]; 

     if ([searchText length] > 0) 
     { 
       for (int i = 0; i < [self.ItemOfMainArray count] ; i = i+1) 
       { 
         name = [self.ItemOfMainArray objectAtIndex:i]; 

         if (name.length >= searchText.length) 
         { 
           firstLetter = [name substringWithRange:NSMakeRange(0, [searchText length])]; 
           //NSLog(@"%@",firstLetter); 

           if([firstLetter caseInsensitiveCompare:searchText] == NSOrderedSame) 
           { 
            // strings are equal except for possibly case 
            [self.listOfTemArray addObject: [self.ItemOfMainArray objectAtIndex:i]]; 
            NSLog(@"=========> %@",self.listOfTemArray); 
           } 
         } 
       } 
     } 
     else 
     { 
      [self.listOfTemArray addObjectsFromArray:self.ItemOfMainArray ]; 
     } 

     [self.tblView reloadData]; 
} 
} 

Выход Показать в вашем Consol.

Этот код может полезно для вас.

+0

Благодарим за помощь, работаем отлично. – Volty

0

Я думаю, что лучший способ сделать это строит свой собственный NSCompoundPredicate:

NSString *nameVar = ...; //ex: smith m 
    NSArray *names = ...; //ex: John Smith, Mary Smith 

    NSArray *terms = [nameVar componentsSeperatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; 
    NSMutableArray *subpredicates = [NSMutableArray array]; 

    for(NSString *term in terms) { 
     if([term length] == 0) { continue; } 
     NSPredicate *p = [NSPredicate predicateWithFormat:@"name contains[cd] %@", term]; 
     [subpredicates addObject:p]; 
    } 

    NSPredicate *filter = [NSCompoundPredicate andPredicateWithSubpredicates:subpredicates]; 
    [fetchController setPredicate:filter]; 

Наслаждайтесь Coding!

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