0

複数のタブを持つタブビューを作成するための推奨される方法は何ですか。すべてのビューに単一のXIBファイルを使用する必要がありますか、それともビューごとに異なるXIBを使用する必要がありますか?私の好みは、タブビューのビューごとに複数のコントローラーを使用することです。したがって、異なるxibファイルを使用します。どうすればそれを達成できますか?タブビューごとに1つのxibファイルに複数のビューを含めることは可能ですか?それぞれに異なるコントローラーがありますか?

4

2 に答える 2

1

タブは常に同じですか、それとも動的ですか?それらが常に同じである場合、それが簡単であるという理由だけで、私は単一のxibファイルを使用する傾向があります。複数のコントローラーオブジェクトを引き続き使用できます。それらをのサブクラスにNSObjectして、すべてを同じxibにドロップするだけです。

タブビューでsを使用する簡単な方法があるかどうかを確認するために、簡単なGoogleを実行しましたが、このスレッドNSViewControllerを見つけました。これには、それらを使用する方法のサンプルコードが含まれています。これにより、タブごとに個別のコントローラークラスとxibが提供されます。明らかに、私はそのコードを試したことがないので、それを保証することはできませんが、それは十分なスタートであるかもしれません。(そのサンプルコードでは、タブを切り替えるたびに新しいView Controllerがインスタンス化されますが、これはおそらくあなたが望むものではありません。私であれば、タブが最初にスワップされたときにインスタンス化してから、保持します。ウィンドウコントローラの辞書で、その後のスイッチで、すでに存在するそれぞれのビューコントローラを引き出します。)

于 2012-03-12T11:26:26.413 に答える
0

最適なアプローチは、タブの複雑さによって異なります。ただし、複数のビューを追加すると、XIB はすぐに乱雑になります。また、コントローラーが肥大化するリスクもあります。

最良のアプローチは、タブごとにビューとコントローラーを用意することです。これにより、アプリへの将来の拡張機能の実装がはるかに簡単になります。

タブ ビューを保持するビュー (またはウィンドウ) を処理するメイン コントローラー (ウィンドウまたはビュー) があります。NSTabViewこのコントローラは、 ( を参照)のデリゲートとして機能しますNSTabViewDelegate

コントローラーがメッセージを受信したら、tabView:didSelectTabViewItem:その特定のタブを管理するサブコントローラーを作成できます。このコントローラーは、関連付けられたビュー ( initWithNib) をインスタンス化し、それをビュー階層に追加します。タブ ビューのタブごとにこのプロセスを繰り返すことができます。メイン (最上位) コントローラが各サブ コントローラのリストを保持するように設定できるため、サブ コントローラを 1 回だけ作成する必要があります。

于 2012-03-13T02:18:43.200 に答える