在iOS中的tableview中dynamicsearch
我有一个tableview
和文本字段,我已经实现了search方法。 现在,当我在textfield
写入一些值,然后单击searchbutton,然后在tableview
search。 但是,我希望它是dynamic的意思是我开始在textfield
input的时候,它应该开始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并做以下更改
- 将文本框添加到视图控制器并分配sockets和代表。
- 现在来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]; } }
在点击事件时执行相同的连接方法连接检查器中的值更改(请参见底部的截图)。