2

ユーザーのアドレス帳を取得し、新しい PeoplePicker コントローラーを使用して結果をスライスし、特定の用語に一致するものだけを表示したいと考えています。UIPeoplePickerNavigationController に検索バーと検索ビューが埋め込まれていることがわかります。かなり標準的なもののように見えますが、これまで使用したことがありません。

PeoplePicker をモーダルに提示したばかりの UIViewController サブクラスからプログラムでそれを取得するにはどうすればよいでしょうか?

これが私がこれまでに試したことです。言うまでもなく、うまくいきません。

ABPeoplePickerNavigationController *pick = [[ABPeoplePickerNavigationController alloc] init];
pick.searchDisplayController.searchBar.text = @"jim";
[self presentModalViewController:pick animated:YES];
[pick release];

編集:より明確にするために、ABPeoplePicker を表示したいのですが、アプリの他の場所からの検索語で既に「検索中」になっています。ユーザーがその検索をキャンセルして独自の検索を実行したい場合は問題ありませんが、最初に自分の用語で searchviewcontroller をプリロードしたいと考えています。

4

2 に答える 2

1

誰かがまだこれについて疑問に思っている場合に備えて、私はプレゼンテーション完了ブロックで searchBar の最初のレスポンダーのステータスを操作することで解決策に到達しました。

[self presentViewController:pick animated:YES completion:^{
    UISearchBar *bar = pick.visibleViewController.searchDisplayController.searchBar;
    [bar becomeFirstResponder];
    [bar setText:@"jim"];
    [bar resignFirstResponder];
}];

検索結果が表示されるまでに少し時間がかかりますが、これが ABPeoplePickerNavigationController でプログラムによる検索を実行するための最良の方法です。

于 2013-12-17T21:50:00.237 に答える
0

ABPeoplePickerNavigationControllerDelegateを宣言しているかどうかを確認してください。

次に、アプリを実行します。お役に立てば幸いです

于 2010-07-27T10:44:11.327 に答える