uisearchdisplaycontrollerの検索結果は、検索テーブルよりも他のセルレイアウトと動作を持っています

StackOverflow https://stackoverflow.com/questions/8333532

質問

ストーリーボードを使用しています。 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 

それを修正する方法。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top