自动完成目标c中的数组项目的txtfield

我有一个文本字段,其中每当用户键入它显示相关的项目从数组在tableView中select任何一个,但是当用户键入任何关键字时,它不显示数组。 当用户以大写字母input任何单词作为数组中的商店时,它显示数组。

我想,当用户input任何单词,无论是在小或大写字母,它应该显示包含数组的表视图。 以下是我的代码,

  -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ NSLog(@"Range:%@",NSStringFromRange(range)); NSLog(@"%@",textField.text); NSString *passcode = [textField.text stringByReplacingCharactersInRange:range withString:string]; NSLog(@"%@",passcode); NSPredicate *predicate = [NSPredicate predicateWithFormat: @"SELF CONTAINS %@",passcode]; carArray = [_staticCarArray filteredArrayUsingPredicate:predicate]; city = [_staticCarArrays filteredArrayUsingPredicate:predicate]; NSLog(@"%@", carArray); NSLog(@"%@", city); if ([carArray count]==0) { _carTable.hidden = TRUE; }else{ _carTable.hidden = FALSE; } if ([city count]==0) { _autotable.hidden = TRUE; }else{ _autotable.hidden = FALSE; } [_carTable reloadData]; [_autotable reloadData]; return TRUE; } 

对于不区分大小写的searchreplace

 NSPredicate *predicate = [NSPredicate predicateWithFormat: @"SELF CONTAINS %@",passcode]; 

 NSPredicate *predicate = [NSPredicate predicateWithFormat: @"SELF CONTAINS[c] %@",passcode]; 

这里,[c]表示不区分大小写的比较。

使用UITextfieldDeleage,UITableViewDelegate,UITableViewDataSource

 @interface ABCViewController : UIViewController <UITextFieldDelegate> myTextField.delegate = self; 

获取TextField文本并将值保存在NSMutableArray中

2.检查数组值,并检查TextField文本是否已经包含在Array使用NSPredicate

3.将TableViewCell TextLabel文本显示到文本框

  #pragma mark - UITextField Delegate -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString: (NSString *)string{ NSLog(@"Range:%@",NSStringFromRange(range)); NSLog(@"%@",textField.text); NSString *passcode = [textField.text stringByReplacingCharactersInRange:range withString:string]; NSLog(@"%@",passcode); NSPredicate *predicate = [NSPredicate predicateWithFormat: @"SELF CONTAINS %@",passcode]; autoCompleteFilterArray = [autoCompleteArray filteredArrayUsingPredicate:predicate]; NSLog(@"%@", autoCompleteFilterArray); if ([autoCompleteFilterArray count]==0) { autoCompleteTableView.hidden = TRUE; }else{ autoCompleteTableView.hidden = FALSE; } [autoCompleteTableView reloadData]; return TRUE; }