- Сначала возьмите NSMutableArray
.h file
NSMutableArray * searchDataArray;
Теперь объявите его свойство и синтезируйте его в вашем .m файле
2.В вашем -(void)viewDidLoad
выделите поисковый массив и сохраните его.
[Я думаю, что вы можете установить панель поиска и вызвать делегата поиска] .. так что в
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar{
[sBar resignFirstResponder];
searching = YES; //A boolean for searching condition
[searchData removeAllObjects];
NSString *searchText = searchBar.text;
// record is a mutable array containing the cell text
int count = [records count];
for (int i=0; i<count; i++) {
for(int j=0;j<6;j++){
//finding the cell strings for checking
recordsstr = [NSString stringWithFormat:@"%@",[records objectAtIndex:i];
//Matching string of table and search string
//case sensitivity checking
NSString *mainString = [NSString stringWithFormat:@"%@",[recordsstr lowercaseString]];
NSString *searchString = [NSString stringWithFormat:@"%@",[searchText lowercaseString]];
NSLog(@"main String: %@ and search string: %@ ",mainString,searchString);
NSLog(@"main string lenght: %d and search String lenght: %d",[mainString length],[searchString length]);
if([mainString isEqualToString:searchString] || [mainString rangeOfString:searchString].location != NSNotFound){
[searchData addObject:[NSNumber numberWithInt:i]];
NSLog(@"indext after matching: %d",i);
NSLog(@"number of date in searchdata array after matching: %d",[searchData count]);
break;
}
recordsstr = nil;
}
}
В этом коде я сопоставляю текст ячейки и текст поиска. После нахождения текста ячейки берется массив ячеек индекса.
Теперь, когда поиск будет завершен, перезагрузите таблицу [tableview reloadData]
Сейчас в cellForRowAtIndex
проверьте, что
if(searching == YES){
for(int i = 0; i<[searchData count]; i++){
if(indexPath.row is equal to [searchData objectAtIndex:i])
{
//change your text field
}
}
else{
//Without searching code
}
Может быть, это поможет вам. Если возникнут какие-либо проблемы, постучите ко мне.