1

私は Mac OS プログラミングの初心者です。現時点では、上部にツールバーがあり、下部に適切なビューがある 1 つのウィンドウを持つ単純な測定アプリケーションを作成しようとしています。ツールバーの ボタンをクリックすると、その下のビューが切り替わります。たとえば、[接続] ボタンをクリックすると接続設定が表示され、[測定] にはデバイスからの現在のデータが表示されます。

問題は - ビューのスワッピングの処理方法がわからない、つまり、私が知っているが正確ではないことです...ここで同様の議論を見つけました: NSViewController and multiple subviews from a Nib but there is no answer to create how to create NSWindowControllerとそれをメイン ウィンドウに割り当てる方法。ビューを交換できるようにするには、 NSWindowController を作成する必要があると思います。私が間違っている場合は、私を修正してください。

だから私は新しいプロジェクト(ここではSampleと呼ばれる)を作成しています.SampleAppDelegate.hファイルは次のようになります:

@interface SampleAppDelegate : NSObject <NSApplicationDelegate> {
@private
    NSWindow *window;
}

@property (assign) IBOutlet NSWindow *window;

@end

(私が思うに) MainMenu.xib から作成された唯一のウィンドウを保持するウィンドウ ivar があります。

では、SampleAppDelegate からウィンドウの NSWindowController を作成するにはどうすればよいでしょうか?

WindowController サブクラスを作成し、関数で (void)applicationDidFinishLaunching:(NSNotification *)aNotification of the SampleAppDelegate を次のように作成する必要があります。

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    MyWindowController *wc = [[MyWindowController alloc] initWithWindow:self.window];

    [wc showWindow:self];
    self.myWindowController = wc;
    [wc release];

}

ヒントや助けにとても感謝しています。

マルシン

4

1 に答える 1

2

ビュースワッピングを行うためにNSWindowControllerは必要ありません。NSWindowControllerは、複数のトップレベルウィンドウが必要な場合にのみ使用されます(私は思います)。

必要なビューのタイプごとにNSViewControllerをサブクラス化し、各ビューをペン先に配置し、ウィンドウの下部にビューを配置する必要がある場合は-(NSView *)viewを呼び出すことができます。通常のようにウィンドウに追加するか、setContentView:viewを使用してNSBoxに配置できるはずです。

2つのビューに対して、MeasurmentsViewControllerとConnectionViewControllerを作成します。次に、MeasurementsView.nibとConnectionView.nibでビューを作成し、それらのペン先を使用してビューコントローラーを初期化します。

次に、メインウィンドウで、NSBoxを配置する場合、MeasurementsViewを配置する場合

NSView *measurementsView = [measurementsViewController view];
[boxAtBottomOfWindow setContentView:measurementsView];

そしてそれにConnectionViewを置くために

NSView *connectionView = [connectionViewController view];
[boxAtBottomOfWindow setContentView:connectionView];
于 2011-07-07T22:35:06.820 に答える