1

UITableViewController で、ユーザーが特定のセルをタップすると、入力ビュー (つまり、ピッカー ビューなど) を使用して、テープで留められたセルの下から新しいセルがスライドする機能を作成しています。

これで、すべてのテーブル ビュー コントローラーでこの動作を何度も作成できますが、代わりに、この機能を自動的に組み込むテーブル ビュー コントローラーのサブクラスを作成する方法があったのではないかと考えています。私の考えでは、デリゲートに特定の indexPath の入力ビューを返すように要求する新しいプロトコル デリゲート メソッドを作成する必要があります。サブクラスは、タップされたセルの下のセルに inputView を挿入することを自動的に認識します。

この種の実装の背後にある考え方は、テーブル ビューと同じデータ ソースとデリゲート メソッドを使用してテーブル ビューが構築されるということです。唯一の違いは、新しいデリゲート メソッドが特定のインデックス パスの入力ビューを返す場合、タップされたセルにその機能を提供します。

私の質問は、UITableViewController のサブクラス化によってセルがタップされたときに、この自動セル挿入 (入力ビューの挿入) を実装するにはどうすればよいでしょうか?

サブクラスを作成して機能を拡張する方法がわかりません。どんな助けでも大歓迎です。

4

1 に答える 1

0

この回答が既によく知っているものと重複する場合は、事前にお詫び申し上げます。どのような出発点がよいかわかりませんでした。

したがって、iOS のテーブルについて話すとき、UITableViewそれ自体、delegate、および の3 つのコンポーネントがありdatasourceます (これらはすべて既にご存じだと思います)。私たちを助けるために、Apple はUIViewController、テーブル ビュー、デリゲート、およびデータソースを管理するサブクラスを提供しています - UITableViewController.

「自動入力セル挿入」ロジックをコードで使用するすべてのUITableViewControllerインスタンスに複製するよりも、1 か所に配置する方がはるかに明確で、健全で、優れていると考えるのは明らかに正しいことです。

ただし、これが重要な点です。delegateおよびdatasourceメソッドはの一部ではありませんUITableViewController- それらは の一部ですUITableView。本当にやりたいことは、テーブル ビューをサブクラス化し、デリゲート/データソース メソッドを拡張することのように思えます。

それが紛らわしい場合は、次のように考えてみてください: 理想的には、改善された自動入力セル挿入、テーブル ビューをどこでも機能させたいと考えています。テーブル ビューは、テーブル ビュー コントローラーだけでなく、任意のビュー コントローラー (またはビュー) でも使用できます。デリゲート メソッドは、コントローラー自体に実装する必要はありません

したがって、おそらくやりたいことはサブクラスUITableViewであり、新しい入力ビューメソッドをサポートするようにデリゲートとデータソースを変更し (プロトコルの拡張についてよくわからない場合は、この SO の回答を参照してください)、必要に応じて、UITableViewControllerデフォルトでテーブル ビュー サブクラスを使用するサブクラス。

于 2013-06-21T18:57:47.940 に答える