2010-01-14 232 views
2

我想在可可中構建基於文檔的應用程序,但它可以創建和處理不同類型的文檔。將Word,Excel,Powerpoint全部放在一個應用程序中,只要簡單得多。但基於文檔類型,每個窗口都會有所不同。具有多種文檔類型的可可基於文檔的應用程序

對於存儲我將使用CoreData。我想添加一個指定文檔類型的字段,因爲它們應該都具有相同的文件末尾。

因此,如果不創建幾個獨立的應用程序,最好的方法是什麼?我如何在Interface Builder中創建這個?我如何編碼?

我不需要詳細的源代碼或任何東西,只是如何做到這一點的一般想法,我會指出其餘的。

在此先感謝!

回答

1

您將首先爲每種文檔類型創建一個NIB;和NSDocument的子類(在這裏使用現有的基於文檔的應用程序示例-NIB進行設置)。然後您將設置這些類來處理應用程序屬性列表中的各種文檔類型;就我所知,在XCode的某處隱藏了一些有用的工具。

一旦運行完畢,大部分細節應該自動處理;但是您可能仍然需要對文件菜單進行一些修改,並且我似乎記得設置默認文檔類型以及其他方面存在一些問題。

總的來說,這並不比爲一種文檔創建應用程序複雜得多。

PS:請注意確保你真的需要不同的文件類型;有時對於同一個文件有幾個不同的視圖可能更合適。只是一個想法。 :)

+0

因此,如果我得到你的,我將我的數據存儲在一種文件格式,並根據文件的類型,我只是顯示它不同?這聽起來很簡單。但是,我如何創建不同的窗口類型?例如,他們需要有不同的工具欄。 – ron 2010-01-14 15:28:07

+0

我寫的東西聽起來令人困惑。我的意思是當我只有一個NSDocument類時,我如何將它與不同的窗口類型關聯起來?或者我應該只有一個窗口,並更改工具欄,所有面板等? 但是,這將與可可的標準行爲一起工作嗎?像「自定義工具欄」菜單功能一樣? – ron 2010-01-14 15:38:19

+0

我並不是說你必須要做的是有一種類型;我只是把它扔在那裏。如果你有這些擔憂,你可能需要不同的類型。 – 2010-01-15 12:35:04

11

這是Cocoa Document系統明確設計的目的。蘋果provides documentation,但這裏是亮點。

  • 每種文件都是NSDocument的子類。如果您使用的是核心數據,請改爲使用NSPersistentDocument。 (關於如何在基於文檔的應用程序中使用核心數據,Apple有basic tutorial
  • 您可以通過Info.plist告訴Cocoa有關應用程序可以打開的文檔種類以及要使用的文檔類。
  • 每個NSDocument子類都有一個或多個與之關聯的對象,其中每個對象表示一個窗口。如果您只有一個窗口,則不必子分類NSWindowController。你可以把你的UI邏輯放在你的文檔子類中。但是,對於更乾淨的代碼,我強烈建議子類NSWindowController
  • NSWindowController(和NSDocument如果您決定不子類NSWindowController)可以從您在Interface Builder中構建的NIB加載窗口。實際上,這是創建文檔窗口的推薦方法。

希望這給你一個關於如何在Cocoa中實現這個方法的一般想法。

+0

是的,它的確如此。謝謝! – ron 2010-01-14 16:28:02

+0

如果它對你有幫助,隨時可以upvote ;-) – Alex 2010-01-14 16:30:17

+0

+1用於說明我試圖通過的內容,但是以更清晰和更容易理解的方式。 :) – 2010-01-20 08:09:07

相關問題