在 iOS 的表视图中进行动态搜索

Dynamic searching in tableview in iOS

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

我该怎么做?

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

只需在 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];
}

希望,这就是您要找的。如有任何问题,请回复我。

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

转到 StoryBoard 并进行以下更改

  1. 将文本框添加到视图控制器并分配插座和委托。
  2. 现在到 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];
    }
    
    }