2011-07-07 21 views
1

我很新的Mac OS編程。此刻,我正在嘗試創建簡單的測量應用程序,該應用程序將有一個窗口,頂部有工具欄,底部有相應的視圖。點擊工具欄中的按鈕應導致在其下方切換視圖 - 例如,點擊「連接」按鈕將顯示連接設置,「測量」將顯示來自設備的當前數據。交換視圖 - NSWindowController和NSViewController(s)

的問題是 - 我不知道如何處理交換意見,也許在其他的話 - 這是我知道的,但不完全... 我在這裏發現了類似的討論:NSViewController and multiple subviews from a Nib但沒有回答如何建立NSWindowController以及如何將其分配給主窗口。因爲我猜想有必要創建NSWindowController來交換視圖。如果我錯了,請糾正我。

所以我創建新的項目(稱爲樣本這裏),並有SampleAppDelegate.h文件,它看起來像:

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

@property (assign) IBOutlet NSWindow *window; 

@end 

有窗口伊娃,其持有的只有一個窗口,從創建的MainMenu.xib(我認爲)。

那麼我應該如何爲SampleAppDelegate的窗口創建NSWindowController?

我應該創建我WindowController子類,並在功能 - (空)的applicationDidFinishLaunching:中SampleAppDelegate的(NSNotification *)aNotification 這樣的:

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

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

} 

我會爲任何提示非常感謝和幫助。

馬辛

回答

2

你不應該需要一個NSWindowController做交換看法,NSWindowController使用(我認爲),只是當你需要多個頂層窗口。

你可以爲NSViewController子類化每種類型的視圖,將每個視圖放入一個筆尖,並在需要視圖放入窗口底部時調用 - (NSView *)視圖。您應該能夠像正常一樣將其添加到窗口中,或者使用setContentView將其添加到NSBox中:view

對於您的兩個視圖,您將創建MeasurmentsViewController和一個ConnectionViewController。然後,您將在MeasurementsView.nib和ConnectionView.nib中創建視圖,並使用這些筆尖初始化視圖控制器。

在主窗口

然後,如果你把一個NSBox,如果你想要把MeasurementsView進去

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

,並把ConnectionView進去

NSView *connectionView = [connectionViewController view]; 
[boxAtBottomOfWindow setContentView:connectionView];