0

指示に従うのが難しい。UIView に UISearchBar があります。ユーザーは検索文字列を UISearchBar に入力し、検索アイコンをクリックして検索します。結果は新しいウィンドウ (UITableView) に表示されます。

私の検索は私にこれを示しました:

UISearchDisplayController は UIView から継承されないため、UIView に追加できません。インターフェイス ビルダーで IBOutlet を使用して UISearchBar を追加し、その UISearchBar を使用して UISearchDisplayController をプログラムで作成できます。

たとえば、コードでそれを行うだけです(View Controllerがvcであると仮定): [vc addSubview:mySearchDisplayController.searchBar]; // searchBar はビューであり、mySearchDisplayController は searchBar のみを制御することに注意してください。

そしてこれも:

ビュー コントローラーに UISearchBarDelegate を実装させるだけです。xib ファイルでは、UISearchBar をビューに追加して必要に応じて構成し、アウトレットを作成し (実際には省略可能ですが、明示的にすると役立ちます)、デリゲート アウトレットをビュー コントローラーに割り当てるだけです。次に、検索バー イベントに応答するために、必要に応じて UISearchBarDelegate プロトコル メソッドを実装します。例: - (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar { [self handleSearch:searchBar]; }

  • (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar { [self handleSearch:searchBar]; }

  • (void)handleSearch:(UISearchBar *)searchBar { NSLog(@"ユーザーが %@ を検索しました", searchBar.text); [searchBar rejectFirstResponder]; // キーボードを消したい場合 }

  • (void)searchBarCancelButtonClicked:(UISearchBar *) searchBar { NSLog(@"ユーザーが検索をキャンセルしました"); [searchBar rejectFirstResponder]; // キーボードを消したい場合 }

私はちょうどそれを得ていない !UIView に mySearchController を追加する必要がありますか? または私のUISearchBar?UIView に追加しても、何も起こりません。それを私の UISearchBar に追加すると、アプリケーションが本当にうまくいきます。エラーは発生しません。ハングするだけです。

次に、2 番目の部分であるデリゲートです。UIView にデリゲートを配置する必要がありますか? またはUISearchDisplayControllerで?どの方向に進むべきかわからず、これまでのところ何も機能していません。助けてください。

この時点で本当に必要なのは、handleSearch メソッドを実行することだけです。よろしくお願いいたします。

非常に混乱。

4

1 に答える 1

0

Interface Builder で検索バーをアウトレットとして作成し、次のコードを使用して UISearchDisplayController を作成するという考え方です。

self.searchDisplayController2 = [[UISearchDisplayController alloc] initWithSearchBar:self.searchBar contentsController:self];
self.searchDisplayController2.delegate = self;
self.searchDisplayController2.searchResultsDelegate = self;
self.searchDisplayController2.searchResultsDataSource = self;

このコードは、View Controller に実装されますviewDidLoad。また、同じ VC に少なくとも 2 つのデリゲート関数を実装する必要があります。

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
于 2013-09-27T09:25:48.940 に答える