2014-05-07 39 views
2

我有一個關於爲OSX Cocoa App啓用File Open菜單項的問題。在Cocoa App中啓用打開菜單

我在AppDelegate中創建了一個openDocument方法,並將菜單項連接到該方法,並驗證了當我單擊文件打開菜單時該方法被調用。

- (IBAction)openDocument:(id)sender 

我的問題是,這是否真的是實現文件打開菜單功能的方式?我希望Cocoa可以自動顯示打開的面板對話框,而不必在openDocument方法中編寫代碼來完成它。這不是這種情況嗎?

回答

4

NSDocumentController的默認實現爲openDocument:
對於非基於文檔的應用程序,您必須提供自定義實現(就像您一樣)。

原因可能是,對於基於文檔的應用程序,文檔控制器可以使用打開的面板返回的URL的內容創建NSDocument的實例。
對於其他應用程序,在用戶選擇文件之後應用程序應該做什麼並不那麼明顯。所以你必須通過代碼指定這種行爲。

如果您的應用適合基於文檔的模型,則可以查看Document-Based App Programming Guide。採用Cocoa文檔體系結構時,您可以免費獲得許多默認行爲。

當您在「新建項目」嚮導中選中「創建基於文檔的應用程序」複選框時,Xcode會創建所有必需的類。

+0

此答案中的一些示例代碼:http://stackoverflow.com/a/8647783/2269574 – smacdonald