как да покажа предложение за търсене в UISearchBar?

Правя демо приложение за времето и вътре в него използвам UISearchBar, за да мога да въвеждам име на град от потребителя, но не знам как да покажа предложение за това.

Например, ако потребителят въведе „lon“, тогава трябва да има имена на градове, предлагащи започване от „lon“, като Лондон и т.н.


person Lalit Kumar    schedule 01.04.2015    source източник
comment
за показване на данните или изгледа ли говорите?   -  person Retro    schedule 01.04.2015
comment
И двете. Как да извлечете данни от списък с имена на градове и да ги покажете. Искам да покажа тези данни в TableView, но ако има друг начин, той е добър.   -  person Lalit Kumar    schedule 01.04.2015
comment
тъй като имате лента за търсене, използвайте също searchtableview, можете да филтрирате данните като потребителски тип и да ги показвате в таблица.   -  person Retro    schedule 01.04.2015
comment
благодаря ... но как мога да използвам searchtableview   -  person Lalit Kumar    schedule 01.04.2015


Отговори (2)


UISearchBar има свой собствен протокол за делегиране UISearchBarDelegate, методът -

-(BOOL)searchBar:(UISearchBar *)searchBar
shouldChangeTextInRange:(NSRange)range
  replacementText:(NSString *)text

направи възможно по време на редактиране да извършвате някои допълнителни операции, тук можете да поставите своя NSPredicate, за да видите дали вмъкнатият текст има град, който BEGINSWITH или CONTAINS въведения текст.

person Andrea    schedule 01.04.2015

Можете да направите това, като

  1. създайте масив (списък) от места, които да бъдат показани ... добавете обект в масив!

    NSArray *list;

    NSArray *listFiles;

2. Филтрирайте съдържанието ..

-(void)filter :(NSString *) match1


    listFiles = [[NSMutableDictionary alloc] init];

    NSPredicate *sPredicate = [NSPredicate predicateWithFormat:@"FullName BEGINSWITH[c] %@", match1];

    listFiles = [[ContactDect filteredArrayUsingPredicate:sPredicate ] mutableCopy];
    f_name_array=[[NSMutableArray alloc]init];

    for (NSDictionary *d in listFiles) {

        [self.f_name_array addObject:[d objectForKey:@"FullName"]];

    }
    list=f_name_array;
    NSLog(@"%@",list);



}
  1. след това пребройте списък в numberOfRowsInTableview:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return [listFiles count]; }

  1. cellForRow ::::

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"abccell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; cell.textLabel.text = [NSString stringWithFormat:@"%@" ,[listFiles objectAtIndex:indexPath.row]]; return cell; }

Извикайте метода Filter, докато редактирате textFeild!

[self filter:textfeild1.text];

Иска ми се да ви помогне .....

person Devang Goswami    schedule 01.04.2015
comment
благодаря .... вече работи .... но как мога да получа списък с топ градове или трябва да въвеждам име на всеки град? - person Lalit Kumar; 01.04.2015