私はiTunesに似たレイアウトのアプリケーションを持っています。メインウィンドウはNSSplitViewです。NSSplitViewでビューの内容を動的に変更しますか?
左の列でユーザーが選択した内容に応じて、別のビューを表示する必要があります。たとえば、iTunesで「音楽」をクリックするとテーブルの曲のリストが表示されます。「テレビ番組」をクリックすると、白い画面にテキストが表示されます。
これを年齢に合わせて試してみましたが、正しい方向のポインタは非常に便利です!
私はiTunesに似たレイアウトのアプリケーションを持っています。メインウィンドウはNSSplitViewです。NSSplitViewでビューの内容を動的に変更しますか?
左の列でユーザーが選択した内容に応じて、別のビューを表示する必要があります。たとえば、iTunesで「音楽」をクリックするとテーブルの曲のリストが表示されます。「テレビ番組」をクリックすると、白い画面にテキストが表示されます。
これを年齢に合わせて試してみましたが、正しい方向のポインタは非常に便利です!
NSSplitView
の右側のウィンドウでは、タブなしの場所にNSTabView
を置くことができます。ビューの各タブには、表示したいビューの1つを含めることができます。次に、アウトラインビューのデリゲートで、特定の項目が選択されたときに適切なビューを表示するようにタブビューに依頼します。
これは実際にはNSViewControllerの仕事です。これを使うと、各ビューを別々のnibファイルに入れて、必要に応じてそれらを入れ替えたり入れ替えることができます。
お持ちの場合は、のために:あなたは意見を交換する必要がある場合は、あなたがこのような何かを行うことができ充実例えば
NSView *musicView = [musicViewController view];
[rightPaneBox setContentView:musicView];
編集(あなたがNSSplitViewの右側のペインでNSBoxを持っていると仮定)たとえば、ミュージックビューとテレビビューです。 MusicView.nibとTVView.nibという2つの新しいnibファイルを作成し、それらのビューをデザインします。次に、NSViewController、MusicViewController、およびTVViewControllerの2つのサブクラスを作成します。それぞれのinitメソッドで、[super initWithNib:@ "MusicView.nib" bundle:nil]と呼ぶでしょう。
新しいビューを選択するメソッドでは、[musicViewControllerビュー]を呼び出して、NSSplitViewの右側に配置するビューを取得します。
+1でもそれは可能ですが、これを一からやることができるようにXCode 4には十分に精通しています。ありがとう! – Jacob
私はうまくいかなかったことを試した後、別の解決策を見つけました。メソッド-replaceSubview:with:ほとんど正確に正しいことをします。ビューを切り替えるには、後で使用するために隠しビューを保存するだけです。
ビューの位置とサイズが正しいことを確認するには、現在のビューからフレームをコピーしてから次のビューに置き換えます。あなたが最初の時間のためにこれを呼び出す前にnextContentViewを初期化する必要があります
- (void)toggleView
{
NSArray* views = [splitView subviews];
long count = [views count];
// toggle last subview's contents (either rightmost or bottommost)
NSView* currentContentView = [views objectAtIndex:(count - 1)];
[nextContentView setFrame:[currentContentView frame]];
NSView* temp = currentContentView;
[splitView replaceSubview:currentContentView with:nextContentView];
nextContentView = temp;
}
:
は、ここでのコードの抜粋です。私は、IBで作成したビューの参照アウトレットを-applicationDidFinishLaunchingに割り当てます。
このようにすると、Xcode(: – Jacob