我正在爲Mac創建一個測試應用程序,試圖使用MVC。在OSX上,initWithNibName的等效參數是什麼?
我創建了5個nib文件,每個文件都有不同的窗口,每個nib都有類文件。
我該怎麼做,以便當您按下MainMenu.xib上的按鈕時,它會打開一個新的視圖?
我已經看到了使用initWithNibName:
,對於iOS,但無法找到這是如何工作在Mac上。還是我以錯誤的方式去做這件事?如果是這樣,那麼您如何使用Xcode在Mac應用程序中管理不同的視圖和類?
我正在爲Mac創建一個測試應用程序,試圖使用MVC。在OSX上,initWithNibName的等效參數是什麼?
我創建了5個nib文件,每個文件都有不同的窗口,每個nib都有類文件。
我該怎麼做,以便當您按下MainMenu.xib上的按鈕時,它會打開一個新的視圖?
我已經看到了使用initWithNibName:
,對於iOS,但無法找到這是如何工作在Mac上。還是我以錯誤的方式去做這件事?如果是這樣,那麼您如何使用Xcode在Mac應用程序中管理不同的視圖和類?
因爲你提到「我創建了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]];
您應該閱讀Apple在Windows,視圖和應用程序中提供的所有文檔。
在某種意義上窗口是 「幀」,即它有三個彩色按鈕和一個標題,而不是其他。每個窗口都有一個內容視圖,該視圖是該窗口的主視圖,並負責顯示內容,例如,按鈕,文字,圖像。內容本身通常作爲視圖實現,即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的答案中的步驟做你想做的事。
非常感謝:] – Cristian 2012-04-15 21:19:29
當你說「打開一個新視圖」時,你的意思是「打開一個新窗口」? – Vervious 2012-04-15 19:12:12
喜歡關閉當前的筆尖並打開另一個,然後來回切換 – Cristian 2012-04-15 19:13:17
您的意思是...關閉當前窗口並打開一個新窗口,或者只是切換內部的視圖?筆尖可以代表窗口或視圖,所以我不確定你的意思。 – Vervious 2012-04-15 19:14:36