6

ストーリーボードを使用しています。プロトタイプセルが 1 つある UITableView があります。このセルのスタイルは「サブタイトル」です。セルから詳細ビューにセグエを追加しました。したがって、ユーザーがセルをタップすると、対応するエディターが開きます...それはすべてうまく機能します。

ここで、UISearchDisplayController と UISearchBar を追加し、デリゲートを実装しました。それは非常にうまく機能します。

ただし、検索結果テーブルでは、セルは「デフォルト」のスタイルであり、タップできません。「検索されていない」テーブルのように見え、動作する結果テーブルを取得するにはどうすればよいですか?

4

5 に答える 5

24

私は答え#1に貢献したいと思います。これは私がやったことであり、うまくいきました

メソッドで

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

パラメータtableViewからセルを割り当てる代わりに

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

ビューのTableViewから直接割り当てるので、これを置き換える必要があります

// UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

これとともに

 UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];
于 2012-09-12T00:48:36.327 に答える
8

問題が見つかりました...

方法

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

結果の場合、ストーリーボードのtableViewではなく、SearchDisplayControllerのresultTableViewであるtableViewからセルを取得しました。

ストーリーボードのテーブルビューから両方のケースでセルを表示するようになり、動作するようになりました。

于 2011-12-01T16:38:22.117 に答える
3

私はios 7.0とXcode 5.0を使用しています。検索ディスプレイ コントローラーがデリゲート ビュー コントローラーと同じテーブルビュー レイアウトを使用していることがわかりました。現在のテーブルビューがデリゲート ビュー コントローラーのテーブルビューか、検索ディスプレイ コントローラーのテーブルビューかを判断するだけです。ただし、文を追加することを忘れないでください

tableView.rowHeight = self.tableView.rowHeight;

次のコード スニペットで:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// Return the number of rows in the section.
if (tableView == self.searchDisplayController.searchResultsTableView)
{
    tableView.rowHeight = self.tableView.rowHeight;//very important!
    return [self.searchResults count];
}
else
{
    ...
    return ...;
}
}

その文を実装するのを忘れると、検索表示のテーブル ビューの行はデフォルトの行と同じ高さしかなく、「検索されていない」テーブルのようには見えません。

于 2014-01-14T12:40:27.157 に答える
0

これに対する答えはここにあります。完全に機能するとは限りませんが、説明したように、UISearchDisplayController はテーブル ビューを作成します。

ドキュメントを確認すると、よりよく理解できますが、次のように記載されています。

検索バーと、検索対象の元のコンテンツを管理するビュー コントローラーを使用して、検索ディスプレイ コントローラーを初期化します。ユーザーが検索を開始すると、検索ディスプレイ コントローラーは、元のビュー コントローラーのビューに検索インターフェイスを重ねて表示し、検索結果を表示する役割を果たします。結果は、検索表示コントローラーによって作成されたテーブル ビューに表示されます。元のView Controllerに加えて、論理的に4つの役割があります。通常、これらはすべて同じオブジェクト (多くの場合、元のビュー コントローラー自体) によって再生されます。

于 2011-11-30T23:06:18.750 に答える