0

単純な答えを見つけることができないように見える非常に基本的な質問。

だからここに取り引きがあります: 私はいくつかのインターフェイスで再利用したい UI の一部を持っています。特に、ナビゲーション スタックの一部である親ビュー内のサブビューとして含める必要がありますが、スタンドアロンのモーダル ビューとしても使用できます。問題の子ビューは、子コントローラーによって実装されたデータバインディング メソッドを持つカスタマイズされた UITableView です。

子ビューは、すべてのデータを取得する特定のモデル オブジェクトにバインドする必要があります。つまり、コントローラーは、そのターゲット モデル オブジェクトに基づいて、UITableViewDataSource に必要なデータバインド メソッドを実装します。

これらのデータバインドメソッドの実装はすべてのインスタンスで同じであるため、この埋め込み可能な子ビューを表すコントローラーを作成する必要があることは明らかですが、iOS 5 より前のようです (現在 iOS 4+ をサポートする必要があります)。ビュー コントローラを他のビュー コントローラ内に埋め込むことは強くお勧めしません。

これは、Apple が Cocoa で採用していると思われるMVC パターンに完全に反するものです (私は、Apple が実装したものが MVC であるとはまったく確信していません)。サブビューコントローラーを埋め込むことが許可されていない場合、子ビューコントローラーのデータバインディング/モデルロジックを別の親インターフェイスで再利用するにはどうすればよいですか?

4

1 に答える 1

1

ビュー コントローラーを使用してデータを提供する代わりに、コントローラー クラス (単なる通常のNSObjectサブクラス) を作成し、サブビューを埋め込む必要があるビュー コントローラーごとにそれをインスタンス化できます。

編集:したがって、次のようなことを行います[[MyController alloc] initWithTableView:tableView]

于 2013-03-17T21:10:57.223 に答える