0

アプリに がありUIScrollView、xib からいくつかのカスタム ビューを追加しているので、水平方向にスクロール (タブ) して、表示されるビューScrollViewを変更できます。今のところこれは機能しますが、ビューをコントローラーに接続する際に問題があります。

構造を選択する方法がわかりませんViewControllers(使用するコントローラーの数、ネストされたコントローラーの使用など)。

rootView とそのコントローラーがあります。この rootView には がありScrollView、この ScrollView には (loadNibNamed メソッドを使用して) xib からロードされたいくつかのカスタム ビュー (サブビュー) が含まれています。

私の質問は、これらの場合と同じViewControllerものを使用する必要がありますか? 問題は、ビュー プロパティが既に rootView ( in ) にバインドされているため、このビュー プロパティをサブビューにもバインドするとエラーが発生することです。また、これらのサブビュー用に新しいコントローラーを作成すると、エラーも発生します。rootViewsubviewsScrollViewViewControllerssuper viewrootView

rootViewのwithメソッドにロードsubviewsすると、これらの所有者は(メソッドの所有者引数が に設定されます) になります。ScrollViewloadNibNamedViewControllersubviewsViewControllerloadNibNamedself

教えてください、どうすればこれを解決できますか? に何controllerを使用するsubviews必要がありますか、新しいものを作成する必要がありますか、それとも既存のものを使用する必要がありますか。または、ネストされたものを使用する必要がありますかcontroller?私はiOS開発の初心者なので、今は混乱してViewControllersいます...

4

1 に答える 1

1

サブビューの制御に関連するコードがあまりない場合は、ルート ビュー コントローラーのみを使用できます。つまり、1 つのシーンに 1 つのコントローラーを使用するのが、MVC の優れたアプローチです。

このように使用している場合は、ビュー コントローラーのビュー プロパティを変更しないでください。これにより、ルート ビュー - コントローラーのセットアップが台無しになります。このビューへの参照だけが必要な場合は、戻り値がloadNibNamed. また、所有者を自分自身に設定している場合は、サブビュー (プロパティではなく) を保持する追加のインスタンス変数を作成してview、xib 自体から所有者を指定し、参照を適切に接続できるようにします。

ただし、サブビューに関してかなりのビジネスロジックを作成する必要がある場合は、個別のビューコントローラーを作成しても問題ありません(すべてのサブビューが多かれ少なかれ同じように動作する場合、単一のクラスで問題ありません)。それ。サブビューの xib では、このクラスを所有者として指定できます。使用loadNibNamed:する場合は、subviewcontroller クラスのオブジェクトを作成し、これを所有者として指定する必要があります。このようにして、すべてをモジュール化できます。

于 2013-05-23T08:56:32.813 に答える