我想创建一个搜索栏,用户将只键入一部分时区,如果数组中存在,它将显示我的数组中的完整时区。例如,如果用户键入“dhaka”,搜索栏将显示完整的字符串“Asia/Dhaka”。那有可能吗?如果可能的话,请指导我的方式。非常感谢您的帮助。
问问题
393 次
3 回答
0
有很多逻辑,但我把我的逻辑放在这里:
取两个NSMutableArray
并将一个数组添加到另一个数组中ViewDidLoad
,例如,
self.listOfTemArray = [[NSMutableArray alloc] init]; // array no - 1
self.ItemOfMainArray = [[NSMutableArray alloc] initWithObjects:@"YorArrayList", nil]; // array no - 2
[self.listOfTemArray addObjectsFromArray:self.ItemOfMainArray]; // add 2array to 1 array
并编写以下 UISearchBar 的委托方法
- (void)searchBar:(UISearchBar *)theSearchBar textDidChange:(NSString *)searchText
{
NSString *name = @"";
NSString *firstLetter = @"";
if (self.listOfTemArray.count > 0)
[self.listOfTemArray removeAllObjects];
if ([searchText length] > 0)
{
for (int i = 0; i < [self.ItemOfMainArray count] ; i = i+1)
{
name = [self.ItemOfMainArray objectAtIndex:i];
if (name.length >= searchText.length)
{
firstLetter = [name substringWithRange:NSMakeRange(0, [searchText length])];
//NSLog(@"%@",firstLetter);
if( [firstLetter caseInsensitiveCompare:searchText] == NSOrderedSame )
{
// strings are equal except for possibly case
[self.listOfTemArray addObject: [self.ItemOfMainArray objectAtIndex:i]];
NSLog(@"=========> %@",self.listOfTemArray);
}
}
}
}
else
{
[self.listOfTemArray addObjectsFromArray:self.ItemOfMainArray ];
}
[self.tblView reloadData];
}
}
输出显示在您的Consol.
此代码可能对您有所帮助。
于 2013-08-22T08:43:49.187 回答
0
您可以为此使用 NSPredicate
喜欢
- (void)searchBar:(UISearchBar *)theSearchBar textDidChange:(NSString *)searchText
{
if(searchText.length < 1){
//reload with full array
return;
}
NSArray *timeZones = ...;//yourfullArray;
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(timeZoneName CONTAINS [cd] %@)",searchText];//if ur array is only strings then change format to @"(self CONTAINS [cd] %@)"
NSArray *filterdZones = [timeZones filteredArrayUsingPredicate:predicate];
NSLog(@"filterdZones %@",filterdZones);
}
注意:未测试代码
于 2013-08-22T09:09:34.417 回答