2012-04-15 80 views
2

我正在爲Mac創建一個測試應用程序,試圖使用MVC。在OSX上,initWithNibName的等效參數是什麼?

我創建了5個nib文件,每個文件都有不同的窗口,每個nib都有類文件。

我該怎麼做,以便當您按下MainMenu.xib上的按鈕時,它會打開一個新的視圖?

我已經看到了使用initWithNibName:,對於iOS,但無法找到這是如何工作在Mac上。還是我以錯誤的方式去做這件事?如果是這樣,那麼您如何使用Xcode在Mac應用程序中管理不同的視圖和類?

+1

當你說「打開一個新視圖」時,你的意思是「打開一個新窗口」? – Vervious 2012-04-15 19:12:12

+0

喜歡關閉當前的筆尖並打開另一個,然後來回切換 – Cristian 2012-04-15 19:13:17

+2

您的意思是...關閉當前窗口並打開一個新窗口,或者只是切換內部的視圖?筆尖可以代表窗口或視圖,所以我不確定你的意思。 – Vervious 2012-04-15 19:14:36

回答

10

因爲你提到「我創建了5個nib文件,每個文件都有不同的窗口,每個nib都有類文件。」我假設你有5個不同的窗口(沒有意見),並希望將其打開按下按鈕。

每個窗口筆尖文件都由一個NSWindowController控制,這將是MVC中的C.要實際加載一個nib文件(以編程方式),請爲其指定一個NSWindowController; OS X中的NSWindowController與iPhone上的UIViewController相當。

NSWindowController *controller = [[NSWindowController alloc] initWithWindowNibName:@"nib1"] 

然後您可以打開/關閉NSWindowController管理的窗口。

[controller showWindow:nil]顯示窗口

[controller.window makeKeyAndOrderFront:self]使窗口的重要窗口。

你可能打算做別的事情,雖然,這是保持同一個窗口,但可以切換窗口的內容視圖。在這種情況下,你需要包含視圖的nib文件(並使用NSViewControllers來加載它們),而不是windows(因爲窗口將是多餘的)。

但是,即使你堅持使用Windows,更換內容查看:

[currentWindow setContentView:[newWindowController.window contentView]]; 

enter image description here

enter image description here

enter image description here

enter image description here

您應該閱讀Apple在Windows,視圖和應用程序中提供的所有文檔。

+0

你能解釋窗口和視圖之間的區別嗎?所以如果我有5個不同的筆尖,我將如何使用此代碼關閉當前的筆尖並在按鈕按下時打開另一個筆尖?非常感謝你的幫助 – Cristian 2012-04-15 19:30:30

+2

恐怕你得自己做一些研究,這將是一個很好的學習過程。一旦你理解了這個基礎問題,這個問題應該沒有問題要解決。 – Vervious 2012-04-15 19:57:22

+0

非常感謝這麼好的答案。我只是不能把我的腦袋繞過這個東西,所以我想我只是要讀所有的文檔:)感謝v多! – Cristian 2012-04-15 20:10:48

1

在某種意義上窗口是 「幀」,即它有三個彩色按鈕和一個標題,而不是其他。每個窗口都有一個內容視圖,該視圖是該窗口的主視圖,並負責顯示內容,例如,按鈕,文字,圖像。內容本身通常作爲視圖實現,即NSButton和NSTextField都是NSView的子類。

的OSX查看文檔的這一部分可能會有所幫助: http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CocoaViewsGuide/WorkingWithAViewHierarchy/WorkingWithAViewHierarchy.html#//apple_ref/doc/uid/TP40002978-CH4-SW13

特別

,看看圖3-1和3-2。

我希望這有助於理解。然後,按照Vervious的答案中的步驟做你想做的事。

+0

非常感謝:] – Cristian 2012-04-15 21:19:29

相關問題