在 iOS 的表视图中进行动态搜索
Dynamic searching in tableview in iOS
我有一个 tableview
和文本字段,我在其中实施了搜索方法。现在,当我在 textfield
中写入一些值并单击搜索按钮时,它会在 tableview
中进行搜索。但是,我希望它是动态的,这意味着当我开始输入 textfield
时,它应该开始搜索而无需单击任何 button
。
我该怎么做?
连接检查器中的连接方法与单击事件值更改(请参阅最底部的屏幕截图)相同。
只需在 TextField
的 Editing 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 并进行以下更改
- 将文本框添加到视图控制器并分配插座和委托。
- 现在到 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];
}
}
我有一个 tableview
和文本字段,我在其中实施了搜索方法。现在,当我在 textfield
中写入一些值并单击搜索按钮时,它会在 tableview
中进行搜索。但是,我希望它是动态的,这意味着当我开始输入 textfield
时,它应该开始搜索而无需单击任何 button
。
我该怎么做?
连接检查器中的连接方法与单击事件值更改(请参阅最底部的屏幕截图)相同。
只需在 TextField
的 Editing 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
.
-(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 并进行以下更改
- 将文本框添加到视图控制器并分配插座和委托。
- 现在到 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];
}
}