uisearchdisplaycontrollerの検索結果は、検索テーブルよりも他のセルレイアウトと動作を持っています
-
26-10-2019 - |
質問
ストーリーボードを使用しています。 1つのプロトタイプセルを備えたuitableviewがあります。このセルはスタイルの「字幕」です。セルから詳細なビューにセグエを追加しました。したがって、ユーザーがセルをタップすると、対応するエディターが開きます...すべてがうまく機能します。
次に、UisearchDisplayControllerを追加して、代表者を実装しました。それは非常にうまく機能します。
しかし、検索結果テーブルでは、セルはスタイルの「デフォルト」であり、タップ可能ではありません。 「未確認の」テーブルのように、結果のテーブルを見て振る舞うために何をしなければなりませんか?
解決 2
問題を見つけました...
メソッド
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
テーブルビューからセルを引っ張りました。これは、ストーリーボードのテーブルビューではなく、SearchDisPlayControllerの結果のテーブルビューではなく、結果の場合です。
私は今、両方のケースでセルをストーリーボードのテーブルビューから表示するようになりましたが、今では機能します。
他のヒント
私は答えに貢献したい#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];
iOS 7.0とXcode 5.0を使用しています。検索ディスプレイコントローラーは、デリゲートビューコントローラーと同じTableViewレイアウトを使用していることがわかりました。あなたがしなければならないのは、現在のTableViewがDelegate View ControllerのTableView、または検索ディスプレイコントローラーのTableViewであるかどうかを判断することです。ただし、文を追加することを忘れないでください
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 ...;
}
}
その文を実装するのを忘れた場合、検索ディスプレイのテーブルビューの行はデフォルトの行と同じくらい高いだけであるため、「未確認の」テーブルのように見えないと思います。
これには考えられる答えがあります ここ. 。それはあなたのために完全に機能しないかもしれませんが、私が説明したように、UisearchDisplayControllerがテーブルビューを作成します。
ドキュメントを確認すると、それをよりよく理解することができますが、次のように述べています。
検索バーと、検索する元のコンテンツの管理を担当するビューコントローラーを使用して、検索ディスプレイコントローラーを初期化します。ユーザーが検索を開始すると、検索ディスプレイコントローラーは、元のビューコントローラーのビューに検索インターフェイスを重ねて検索結果を表示する責任があります。結果は、検索ディスプレイコントローラーによって作成されたテーブルビューに表示されます。元のビューコントローラーに加えて、論理的に4つの他の役割があります。これらは通常、すべて同じオブジェクトによって再生されます。多くの場合、元のビューコントローラー自体です。
私の場合、uisearchdisplaycontrollerは正しいセルタイプ(カスタム)を使用していましたが、セルの高さが間違っていたので、使用する必要がありました
(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
それを修正する方法。