2013-09-23 37 views
1

基於文檔的Mac應用程序的主窗口在哪裏?如果您從Xcode創建一個新項目,MainMenu.xib中沒有窗口。 Document.xib中只有一個用於文檔窗口的窗口對象。我想在界面生成器中設計主窗口,但我不明白它在哪裏創建。Xcode 5中基於文檔的Mac應用程序

編輯

我想我遇到了Xcode中的錯誤。按照預期創建具有隨機名稱的基於文檔的應用程序。

但是如果我創建一個以前的項目名稱我看到在控制檯中首次提出非文檔窗口,也這個錯誤的名字基於文檔的應用程序。

Unknown class 'AppDelegate', using 'NSObject' instead. Encountered in Interface Builder file at path /Users/[COMPUTER]/Library/Developer/Xcode/DerivedData/[PROJECT]-gohsjlddlopenfapdikaqibmvvqs/Build/Products/Debug/[PROJECT]/Contents/Resources/en.lproj/MainMenu.nib. 

回答

4

基於文檔的應用程序沒有一個「主」窗口 - 顧名思義,基於文檔的應用程序是基於涉及每個文檔一個窗口的UI。如果在Xcode中創建新的應用程序項目時,需要UI集中在單個窗口(如iTunes或系統偏好設置)上的應用程序,請在選擇應用程序模板後取消選中「創建基於文檔的應用程序」。

如果您想要創建一個使用基於文檔的工作流程的應用程序,但也具有非文檔特定的窗口,則可以爲這些窗口創建單獨的筆尖並實現邏輯以在文檔類的某個位置顯示和控制它們。 (例如,您可以創建一個NSWindowController子類的偏好設置窗口,伴隨筆尖該窗口的用戶界面,並實例/顯示在您的應用程序委託執行菜單命令窗口。)

+0

當我跑我的項目,它表示第一個空的紋理窗口不是文檔窗口中更改。當我做文件 - >新建比文檔窗口顯示時,我不明白這個第一個窗口是什麼。 –

2

基本可可文檔體系結構假定應用程序每個文檔有一個窗口,主菜單筆尖由應用程序代理擁有。

它不會阻止你的子類或添加其他窗口任何筆尖或控制器。

如果你想要的是一個主窗口和文檔窗口,這是一個常見的模式,但不是在提供的模板。

做到這一點,最簡單的方法是添加一個窗口主菜單筆尖。那麼你可能希望它有一種方法來引用所有的文檔窗口。 Mac上的郵件就是一個很好的例子,雖然它也允許多個主窗口。

你可能需要一個定製的NSWindowController子類來這樣做的權利。

但你也可以添加一個NSObject子類作爲您的應用程序委託和模仿非基於文檔的應用程序的項目模板爲代表的配置。 您需要經過幾個步驟才能做到這一點。 創建一個NSObject子類。 確保它聲明協議。 在你的MainMenu.xib中,從庫中添加一個NSObject(藍色框尋找的東西)。 將其類設置爲新的NSObject子類。 單擊xib文件中的NSApplication佔位符圖標,然後在右側的檢查器中,將委託屬性連接到您的應用程序委託對象。 現在選擇您的應用程序委託對象。 將其窗口屬性連接到xib中的窗口。 如果沒有,並且可能沒有,那麼您需要在您的應用程序委託類接口中聲明它。(這是一樣的添加一個屬性的任何按鈕或其他對象,但你會想它 @property (unsafe_unretained) IBOutlet NSWindow *window;@property (strong) IBOutlet NSWindow *window;

相關問題