私はObjective Cが初めてで、ここに私の問題があります。int と string の 2 つの値の配列があります。
[Messier new:1 :@"Name 1"],
[Messier new:2 :@"Name 2"]...
これらの配列をtableViewにプッシュしました。tableViewにはUISearchBarがあります。セルをタップすると、テキストボタン「表示」が作成されます
選択した名前(セル内の名前)の配列int値から返す必要があります。通常の状態(検索前)では、ボタンは正しい値を返しますが、検索後は間違った値を返します。例 (上の図を見てください) アンドロメダには番号 11、バタフライ 20、ビーハイブ 30 があります。ビーハイブ (numb 30) を検索しています。私が必要として。
これが私のserchBarコードです:
-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
if([searchText isEqualToString:@""] || searchText == Nil)
{
searching = NO;
}
else
{
searching = YES;
[searchArray removeAllObjects];
searchArray = [[NSMutableArray alloc] init];
searchDictionary = [[NSMutableDictionary alloc] init];
NSArray *sourceArray;
NSDictionary *sourceDictionary;
sourceArray = [[AstroData sharedAstroData] messierObjectsArray];
sourceDictionary = [[AstroData sharedAstroData] messierNameIndexesDictionarry];
for(NSString *key in [sourceDictionary allKeys])
{
NSArray *messier = [sourceDictionary objectForKey:key];
for(Messier *mess in messier)
{
NSRange result = [mess.name rangeOfString:searchText options:(NSCaseInsensitiveSearch | NSDiacriticInsensitiveSearch)];
if(result.location != NSNotFound)
{
NSMutableArray *existingArray;
if((existingArray = [searchDictionary objectForKey:key]))
{
[existingArray addObject:mess];
}
else
{
NSMutableArray *tempArray = [NSMutableArray array];
[searchDictionary setObject:tempArray forKey:key];
[tempArray addObject:mess];
}
}
}
}
for(id key in sourceArray)
{
if([searchDictionary objectForKey:key])
[searchArray addObject:key];
}
}
[table reloadAllComponents];
}
多分私はテーブルビューに問題がありますか?すべてに感謝します。
PS私の英語でごめんなさい)