1

iOSプログラミング(およびプログラミング全般)に慣れていないため、質問が不明な場合は事前にお詫び申し上げます。

現在、次のようなユーザーの友達の名前のUITableViewアルファベット順を表示するがあります。NSMutableArray

friends: { @"Andy",@"Anand",@"Bob",@"Cat" };

NSMutableArrayのユーザーの友達の年齢を保持するものがあります。これは、ユーザーには表示されませんが、ユーザーが友達の名前を選択した後、前のViewControllerに渡されます。この年齢配列は次のようなものです。

friendsAges: {@"25",@"23",@"30",@"22"};

私の質問は、友達の名前にを追加したsearchBar場合UITableview、ユーザーがフィルター処理された配列から名前を選択した場合に、対応する年齢オブジェクトが前のViewControllerに返送されるようにするにはどうすればよいsearchResultsTableViewですか。

たとえば、searchBarがなかった場合、「Bob」を選択すると、前のコントローラーにも「30」が送信されます。ただし、ユーザーが「bo」と入力し、フィルターsearchResultsTableViewにボブのみが表示されている場合は、代わりに年齢「25」が前のコントローラーに送信されます。これが最初のインデックスです。

これが私の間違ったコードです:

if (tableView == self.searchDisplayController.searchResultsTableView) {

    NSString *theFriend = [_filteredFriendArray objectAtIndex:indexPath.row];

    // not sure what I should use instead for the _filteredFriendArray below
    NSString *theFriendAge = [_filteredFriendArray objectAtIndex:indexPath.row];

    [self.delegate friendPickerViewController:self
                              didSelectFriend:theFriend
                    didSelectFriendAge:theFriendAge];

} else { //if not using search bar and seeing filtered search results
    NSString *theFriend = [friends objectAtIndex:indexPath.row];
    NSString *theFriendAge = [friendsAge objectAtIndex:indexPath.row];

    [self.delegate friendPickerViewController:self
                              didSelectFriend:theFriend
                    didSelectFriendAge:theFriendAge];
}

フィルタされた検索ビューのインデックスをメイン配列に一致させようとするよりも、NSDictionaryを使用する方が簡単かもしれないと思いますが、それを行う最善の方法がわかりません。

どんな助けでもいただければ幸いです!

4

1 に答える 1

0

そうです、NSDictionary を使用する方が簡単です。各人物は、@{@"name":@"Stephen Hawking", @"age":70} のような NSDictionary で表すことができます。フレンド テーブル ビューに [personDict objectForKey:@"name"] を入力し、選択時に [person objectForKey:@"age"] の値を取得して、前のビュー コントローラーに戻します。

于 2012-11-14T05:36:22.357 に答える