我有一个文本字段,每当用户键入它时,它会显示tableView
中数组中的相关项以选择其中任何一项但是当用户在小关键字中键入任何内容时,它不显示数组。当用户以大写字母输入任何单词作为数组中的存储时,它会显示数组。
我希望当用户输入任何单词时,无论是小写字母还是大写字母,它都应该显示包含数组的表格视图。以下是我的代码,
-(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;
}
答案 0 :(得分:0)
对于不区分大小写的搜索替换
NSPredicate *predicate = [NSPredicate predicateWithFormat: @"SELF CONTAINS %@",passcode];
与
NSPredicate *predicate = [NSPredicate predicateWithFormat: @"SELF CONTAINS[c] %@",passcode];
这里,[c]表示不区分大小写的比较。
答案 1 :(得分:0)
使用UITextfieldDeleage,UITableViewDelegate,UITableViewDataSource
@interface ABCViewController : UIViewController <UITextFieldDelegate>
myTextField.delegate = self;
1.获取TextField文本并在NSMutableArray中保存值
2.检索Array值并使用NSPredicate检查TextField Text是否已包含在Array中
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;
}