0

1 つのビューに複数のプロトタイプ セルがあるアプリに取り組んでいます。これは、ストーリーボードを使用して開発中にアプリの外観を簡単に変更するのに適していました。ただし、今は検索 (フィルタリング) 機能を追加しています。結果の一部を除外するだけで、テーブルビューの外観を変更しないでください。

私の理解では、これを行うには新しい細胞を作成する必要があります。これは正しいです?もしそうなら、プロトタイプセルのすべてのプロパティを持つセルを作成する方法はありますか? 現在、新しく作成された (検索結果) セルには既定の設定があります。

ありがとう。

4

2 に答える 2

1

明確に理解しておくべきことは、UISearchDisplayController コングロマリットで検索を行っているときに表示されるテーブル ビューは、テーブル ビューではないということです。これはのテーブル ビューであり、それを管理する UITableViewController はありません - UISearchDisplayController がそれを行います。したがって、別のテーブル ビューを自分のテーブル ビューのように見せたい場合は、別の手段を講じる必要があります。

編集: 全体として (そして、彼の回答に対するコメントで rdelmar と少し交換した後)、最も簡単な解決策は、セル プロトタイプの使用を完全に放棄することだと思う傾向があります。nib (xib) でセルを設計すると、そのセルを実際のテーブル検索結果テーブルの両方に使用できます。どちらの場合も、nib をそれぞれのテーブル ビューに登録すると、どちらの場合も、コードを変更することなく、適切な処理がすべて実行されます。dequeue

ここで私が似たようなことをしているのを見ることができます:

https://github.com/mattneub/Programming-iOS-Book-Examples/blob/master/ch21p632searchableTable/p536p550searchableTable/RootViewController.m

...その場合、同じnibではなく、両方のテーブルに同じ cellクラスを登録していることを除いて。しかし、それはすべて同じことに帰着します。ただし、絵コンテから始めるわけではないので、最初からプロトタイプ セルを使用するという罠に陥ったことはありません。

于 2013-05-10T16:04:21.817 に答える
1

もちろんコピー&ペーストも使えます。xib ファイル (空のファイル) を作成し、ストーリーボードのテーブル ビューから必要なセルをコピーして、xib ファイルに貼り付けます。テーブル データ ソースの viewDidLoad メソッドで、その nib ファイルを登録します。

[self.searchDisplayController.searchResultsTableView registerNib:[UINib nibWithNibName:@"SearchCell" bundle:nil] forCellReuseIdentifier:@"SearchCell"];

次に、cellForRowAtIndexPath メソッドで、検索結果のテーブル ビュー用にその識別子を持つセルをキューから取り出すだけです。

于 2013-05-10T16:20:20.240 に答える