0

私は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私の英語でごめんなさい)

4

1 に答える 1

0

問題はテキストボタンの「表示」にありました。必要なのはメソッドを追加することだけです

if(search)
....
else
... but code
于 2013-11-05T17:00:01.520 に答える