2014-01-20 51 views
1

我習慣於使用單個窗口開發基於文檔的應用程序,但現在我正在開發基於文檔的應用程序,我在Xcode 5中創建了基於文檔的模板。當我運行我的應用程序時,它會在啓動時打開一個新的無標題文檔。我希望我的應用程序顯示一個「Open ...」對話框,就像Xcode,TextEdit和其他Apple應用程序一樣,而不是自動創建新文檔。我如何去實現這個?是否有一個標誌可以設置爲顯示對話框而不是新文檔,還是我必須創建一個應用程序委託來顯示啓動時的對話框?謝謝你的建議。如何創建以「打開...」對話框啓動的基於文檔的OS X應用程序

回答

5

這將是自定義行爲。

在應用程序控制器中覆蓋applicationShouldOpenUntitledFile:以防止啓動時打開空白文檔,然後顯示文件對話框。

+0

是的,這是一個不錯的節省我的一天。但是,你怎麼做「然後顯示文件對話框」的東西?在applicationShouldOpenUntitledFile裏面?如何? –

+0

標準文件打開面板可以使用'NSDocumentController.openDocument(_ :)'顯示。 –

1

這並不難,但不明顯,需要幾個步驟才能開始。

將窗口添加到MainMenu.xib中 將檢查器中啓動時的Visible設置爲NO。 現在在你的項目中創建一個NSObject子類。您可能會在名稱中包含AppDelegate,因爲您希望將其作爲應用程序的代表。 在接口頭文件中,一定要在NSObject這個詞後面聲明協議。 在那裏,添加一個IBindut屬性NSWindow。 回到MainMenu.xib ... 從庫中向你的xib添加一個NSObject(藍色立方體),並將它的類設置爲你的新的應用程序委託類。 接下來將您的窗口連接到您的應用程序委託類中的屬性,並將窗口的委託出口連接到您的應用程序委託。

現在的菜單。 找到MainMenu中的View菜單並添加一個NSMenuItem。 給它一個標題。 「我喜歡的主窗口」或其他。 現在用兩個IBOutlet將它連接到您的應用程序代理(以防您稍後撥動其啓用狀態或標題) 併爲此菜單項添加IBAction。像showMyFancyWindow:

此菜單項將持久。 在您的IBAction方法中調用makeKeyAndOrderFront:以您的窗口的應用程序委託屬性作爲參數。

附加題

一個BOOL屬性添加到應用程序委託。 類似showsMyFancyWindowAtLaunch

創建一個常量NSString作爲@implementation行上方的鍵。 將複選框按鈕添加到您的窗口。 將它的值綁定到BOOL。 爲該複選框添加一個IBAction方法。 內部的 [NSUserDefaults的sharedDefaults] setBool:self.showsMyFancyWindowAtLaunch forKey:theConstStringKeyYouCreated]

然後在您的applicationDidFinishLaunching: 使用相應的布爾:forKey:的NSUserDefaults的方法來檢查是否要打電話showMyFancyWindow:在啓動方法。

相關問題