1

私が欲しいのは、 a を検索しUITableView、他の配列をセルの textlabel 配列の結果に絞り込むことができるようにすることです。それはおそらく誰にとっても意味がありませんでした。これが例です。

titleArrayセルの textLabel を埋めるために呼び出される配列:

「トヨタ ヤリス」
「フォード・エスケープ」
「フォード F-150」

detailArrayセル内の textLabel の下にある詳細テキスト ラベルを埋める別の配列が呼び出されます。

"車"
「SUV」
"トラック"

「フォード」を検索すると、UITableView に次のようなセルが表示されます。

セル 1: フォード エスケープ
        SUV

セル 2: フォード F-150
        トラック

しかし、次のように表示されています。

セル 1: フォード エスケープ
        車

セル 2: フォード F-150
        SUV

本質的には を絞り込んだのtitleArrayですが ではなくから0 & 1 からdetailArray表示オブジェクト 1 & 2です。これで混乱する場合は、質問してください。titleArraydetailArray

4

2 に答える 2

2

このためには、アレイを1つだけ持つ方がはるかに良いでしょう。これを行うには2つの方法があります。

1)配列の要素のカスタムクラス(から派生)を作成しNSObjectます。おそらく。という名前Vehicleです。車両クラスには、「name」プロパティと「type」プロパティがあります。

NSMutableArray *vehicleArray = [[NSMutableArray alloc] init];

Vehicle *myVehicle = [[Vehicle alloc] init];
myVehicle.name = @"Ford Escape";
myVehicle.type = @"SUV";

[vehicleArray addObject:myVehicle];

2)配列内の要素をタイプにしNSDictionaryます。各ディクショナリには、名前とタイプのキーと値のペアがあります。

NSMutableArray *vehicleArray = [[NSMutableArray alloc] init];

NSDictionary *myVehicle = [[NSDictionary alloc] initWithObjectsAndKeys:@"Ford Escape", @"name", @"SUV", @"type", nil];

[vehicleArray addObject:myVehicle];
于 2012-09-04T02:29:08.153 に答える
1

コードでは、tableView:cellForRowAtIndexPath:という名前のメッセージでUITableViewCellオブジェクトを作成している可能性があります。私はあなたの問題についてこのコードを確認します。UITableViewCellを作成/取得するときに、タイトルと詳細を入力します(デバッガーでこれを確認します)。次の例は、検索引数に応じて項目の簡略化された配列を作成していることに注意してください。タイトル配列を削減すると同時に、詳細配列を削減する必要がある可能性が最も高いようです。また、詳細配列を検索する必要がある場合もあります(アプリをどのように機能させるかによって異なります)。これにより、検索ロジックが複雑になる可能性があります。

//Possible search logic
for (int iii = 0; iii < titleArray.count; iii++) {
    if (<titleArray matches search string>) {
        [titlesToDisplay addObject:[titleArray objectAtIndex:iii]];
        [detailsToDisplay addObject:[detailArray objectAtIndex:iii]];
        //Assuming that you have titles and details in corresponding slots.
    }
}

UITableViewCellのタイトルと詳細の設定を行うときは、titlesToDisplayのエントリをカウントし、titlesToDisplayとdetailsToDisplayからエントリを取得する必要があります。

于 2012-09-04T02:29:39.247 に答える