【问题标题】:AutoComplete txtfield from array items in Objective c来自Objective c中数组项的自动完成文本字段
【发布时间】:2017-11-13 11:50:12
【问题描述】:

我有一个文本字段,每当用户在其中输入时,它都会显示tableView 中数组中的相关项目以选择其中任何一个,但是当用户在 small 关键字中输入任何内容时,它不会显示数组。当用户以大写字母输入任何单词作为存储在数组中时,它会显示该数组。

我希望当用户输入任何单词时,无论是小写字母还是大写字母,它都应该显示包含数组的表格视图。以下是我的代码,

    -(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;

}

【问题讨论】:

标签: ios objective-c arrays


【解决方案1】:

对于不区分大小写的搜索替换

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

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

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

【讨论】:

  • 让我试试。 @Priya
【解决方案2】:

使用 UITextfieldDeleage、UITableViewDelegate、UITableViewDataSource

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

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

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

3.将TableViewCell TextLabel文本显示到Textfield

 #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;
}

【讨论】:

  • 你检查过答案了吗? @siddle
猜你喜欢
  • 2016-11-18
  • 1970-01-01
  • 2010-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多