在iOS中的tableview中dynamicsearch

我有一个tableview和文本字段,我已经实现了search方法。 现在,当我在textfield写入一些值,然后单击searchbutton,然后在tableviewsearch。 但是,我希望它是dynamic的意思是我开始在textfieldinput的时候,它应该开始search而不点击任何button

我怎样才能做到这一点?

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

 - (IBAction)txtValueChanged:(UITextField)sender { [self dynamicSearchInto:sender.text]; //From here, we are passing text of textField. } 

这里, allData是包含所有数据的array 。 而searchArray是一个只包含search数据的数组。 因此,请确保您必须将searchArray tableview's计数设置为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中实现dynamicsearch,我们也可以使用文本框作为search栏。

转到StoryBoard并做以下更改

  1. 将文本框添加到视图控制器并分配sockets和代表。
  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]; } } 

在点击事件时执行相同的连接方法连接检查器中的值更改(请参见底部的截图)。

在这里输入图像说明