2

iTunesのスタイルでソースリストを使用するCocoaデスクトップアプリケーションを開発しています。ソースリストの要素が異なると、メインコンテンツ領域に異なるビューが表示されます。

コンテンツ領域は完全に(垂直)で埋められていNSSplitViewます。左側はNSOutlineViewソースリストです。ユーザーが左側のアイテムを選択すると、関連するビューがスプリッターの右側に表示されます。

すべてを1つのNIBファイルに入れNSTabView、スプリッターの右側にフチなしを配置することで、十分に機能させることができます。ビューを切り替えるには、選択したタブを変更するだけです。ただし、すべてのビューを1つのNIBに入れるのは悪い習慣なので、各サブビューを独自のNIBファイルに移動しようとしています。

私はこのプロセスのほとんどについてかなり良い考えを持っています—これらのビュー(、、など)ごとにサブクラスを作成し、新しいNSViewController各NIBのファイルの所有者を関連するコントローラークラスに設定し、それぞれに接続を設定しますNIB、およびバインディングを作り直しました。画面に表示されているサブビューを実際に変更する方法がわかりません。EntityDetailViewControllerGroupDetailViewControllerview

NSView右側のデフォルトのジェネリックを使用してaddSubview:メッセージを送信してみました。私は最初のサブビューとしてそれに接続して呼び出してみました

NSView *newSubview = /* get subview from the new subview controller */
[[subview superview] replaceSubview:subview with:newSubview];
[self setSubview:newSubview];

しかし、すべてがスペースを空白のままにします。別のNIBからロードされたサブビューを表示するにはどうすればよいですか?

4

1 に答える 1

0

あなたの一般的なアプローチは健全に思えます。newSubviewロードされたView Controllerの が非nilであることを確認しましたか? のフレームはnewSubview、ビュー階層に追加される前後で正しく表示されますか? 最後に、どの時点でreplaceSubview:コードを使用していますか? それ以降である必要がありますawakeFromNib

于 2010-09-01T01:27:47.550 に答える