iOS中tableview中的动态搜索

Posted

技术标签:

【中文标题】iOS中tableview中的动态搜索【英文标题】:Dynamic searching in tableview in iOS 【发布时间】:2015-12-10 18:29:50 【问题描述】:

我有一个tableview 和文本字段,我在其中实现了搜索方法。现在,当我在textfield 中写入一些值并单击搜索按钮时,它会在tableview 中搜索。但是,我希望它是动态的,这意味着在我开始输入textfield 的那一刻,它应该开始搜索而无需单击任何button

我该怎么做?

【问题讨论】:

请在此处发布您的代码。 【参考方案1】:

要在ios中实现动态搜索,我们也可以使用文本框作为搜索栏。

转到 StoryBoard 并进行以下更改

    将文本框添加到视图控制器并分配出口和代表。 现在到 viewcontroller.m 并粘贴以下代码

-(void)textFieldDidChange:(UITextField *)textField

    searchTextString=textField.text;

    [self updateSearchArray:searchTextString];



-(void)updateSearchArray:(NSString *)searchText

    
    if(searchText.length==0)
   
        isFilter=NO;    
    else
      
       isFilter=YES;
        
       searchArray=[[NSMutableArray alloc]init];
        
        for(NSString *string in responceArray)

        NSRange stringRange = [[NSString stringWithFormat:@"%@",string]
                               rangeOfString:searchtext.text options:NSCaseInsensitiveSearch];
            
        if (stringRange.location != NSNotFound) 
            [searchArray addObject:string];

        
            
        
        
        [jobsTable reloadData];
    
    
    

【讨论】:

【参考方案2】:

只需在TextFieldEditing Changed Event 上连接此方法即可。所以,当你改变它的值时,这个方法就会被调用。

- (IBAction)txtValueChanged:(UITextField)sender

    [self dynamicSearchInto:sender.text];
    //From here, we are passing text of textField.

这里,allData 是一个 array,其中包含您的所有数据。而searchArray 是一个仅包含搜索数据的数组。所以请确保,您必须将searchArray 的计数设置为tableview's 行计数。并根据searchArray将数据设置到tableview中。

-(void)dynamicSearchInto:(NSString *)strText

    if (strText.length != 0)
    
        searchArray = [[NSArray alloc]init];
        NSString *str=txtSearch.text;
        NSPredicate *predicate=[NSPredicate predicateWithFormat:@"SELF['yourKey'] contains[c] %@", str];
        searchArray = [allData filteredArrayUsingPredicate:predicate];
        [myTableView reloadData];
    
    else
    
        searchArray = allData;
    
    [myTableView reloadData];

希望,这就是您要找的。有任何问题可以联系我。

【讨论】:

【参考方案3】:

连接方法与点击连接检查器中的事件值更改(参见最底部的屏幕截图)相同。

【讨论】:

@NileshJha 如果我的回答解决了你的问题 - 请你接受它(它可能对其他人有帮助)?

以上是关于iOS中tableview中的动态搜索的主要内容,如果未能解决你的问题,请参考以下文章

iOS 11 中的 SearchController。无法触摸任何 tableView 单元格

Swift iOS - 如何在按下单元格之前从 TableView 的所有 IndexPath 中获取数据

Snapkit:如何在 scrollView 中嵌入一个简单的 tableView?

在 tableview 单元格中显示图像

根据内容动态调整tableview单元格的高度 - iOS Swift

tableView Header 中的 iOS 11 搜索栏在焦点上跳转到屏幕顶部