9

iTunesに似たレイアウトのアプリケーションがあります。メインウィンドウはNSSplitViewです。

ユーザーが左側の列で選択した内容に応じて、別のビューを表示する必要があります。たとえば、iTunesで「音楽」をクリックすると、テーブルに曲のリストが表示されます。「テレビ番組」をクリックすると、テキストが表示された白い画面が表示されます。

何年もの間これを解決しようとしてきましたが、正しい方向へのポインタは非常に便利です!

4

4 に答える 4

5

の右側のペインにNSSplitView、タブなしを配置できますNSTabView。ビューの各タブには、表示するビューの1つを含めることができます。次に、アウトラインビューのデリゲートで、特定のアイテムが選択されたときに適切なビューを表示するようにタブビューに要求します。

于 2011-07-05T13:35:50.313 に答える
1

「変更」されるビューへの参照がある場合は、いくつかのdelgateメソッドで、そのサブビューとして新しいビューを追加できます。

于 2011-07-05T13:38:03.120 に答える
1

うまくいかなかったあらゆる種類のことを試した後、別の解決策を見つけました。メソッド -replaceSubview:with: は、ほぼ正確に正しいことを行います。ビューを切り替えるには、後で使用するために非表示になったビューを保存するだけです。

ビューの位置とサイズが正しいことを確認するには、現在のビューからフレームをコピーしてから、次のビューに置き換えます。

コードの抜粋を次に示します。

- (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;
}

これを初めて呼び出す前に、nextContentView を初期化する必要があります。-applicationDidFinishLaunching で、IB で作成したビューから参照アウトレットを割り当てます。

于 2012-09-08T20:42:46.243 に答える