2017-04-12 66 views
0

在Mac上,通常會有一個「隱藏」主窗口。使用類似Xcode的界面創建程序

通常的例子是「文本編輯」。當你打開一個文件時,你沒有看到「主框架」。相反,每個文件都將在其自己的「文本編輯」實例中打開。這是模擬所謂的MDI接口的OSX方法。

但是,有一個例外。如果你打開Xcode並在那裏打開項目,你可以點擊該文件,它將在主Xcode窗口中打開。如果雙擊該文件,它將在其自己的獨立編輯器窗口中打開,保持主Xcode窗口可見。

我的問題是:我需要做任何特殊的事情才能使我的程序像Xcode一樣行事嗎?我應該爲主框架使用不同的類,還是對打開的文檔事件做出不同的反應?

任何提示/指針,看什麼或甚至官方的Apple文檔將有所幫助。

+3

在Xcode中,項目*是文檔,文件只是該文檔中的資源。 – bbum

+0

聽起來你正在尋找蘋果有時稱爲「鞋盒」的應用程序? (如iPhoto,iTunes ...)該搜索詞可能會導致更多的結果。 – uliwitness

回答

2

現在還不清楚你在做什麼。傳統的Mac用戶界面每個文檔都有一個窗口 - 也就是具有運行多個窗口的應用程序的單個實例的SDI - 但任何應用程序一直都可以根據需要組織窗口的內容,包括顯示多個「文件「在一個窗口內 - 即MDI類型的用戶界面。

應用以不同的方式處理這種「MDI」,例如,一些使用窗格(視圖)和其他選項卡。從macOS Sierra標準的NSWindow支持標籤,這個系統對於標準文檔應用是(半)自動的。有關更多詳細信息,請閱讀Sierra發行說明中Apple的NSWindow Automatic Window Tabbing部分。

如果您希望使用多個窗格 - 例如像Xcode - 你只需要使用視圖(NSView)並按照你的意願安排它們。

HTH

+0

我所追求的是我可以在一個大框架內打開多個文檔的界面。在我的解釋中,只需單擊一次鼠標即可。 – Igor

4

您所描述的文字編輯行爲更像是「SDI」比「MDI」,和術語「SDI」和「MDI」甚至沒有必要,直到微軟長期施樂公司發明後MDI發明了其中macOS是衍生產品的SDI型接口。

無論如何,我認爲你誤解了Xcode的行爲。你似乎認爲「它自己的獨立編輯器窗口」是與「主要的Xcode窗口」不同的一種窗口。但實際上,新窗戶與舊窗戶是一樣的,隱藏了一些可選部件。您可以顯示那些隱藏的部分,並使新窗口看起來完全像舊窗口。演示:

enter image description here

打開多個窗口顯示同一文檔的能力(或者,在Xcode的情況下,項目)是軟件架構的問題。如果您仔細設計應用程序,以便多個窗口可以共享單個模型對象圖,並且可以在對象圖發生變化時收到通知並重新繪製自己的圖形,則您的應用程序支持顯示同一文檔的多個窗口。如果你想讓多種窗口顯示相同的文件,那麼可可的任何內容都不會妨礙你。作爲事實上,Xcode的確實有至少一個其他類型的窗口中,它顯示了一個項目的某些屬性:

project setting sheet

該項目設置表是真正的另外一個窗口; macOS會將它連接到主窗口,但它實際上是NSWindow(或NSWindow的子類)的一個實例,毫無疑問,它具有自己的自定義窗口控制器,該窗口控制器引用與主窗口相同的項目對象。

如果您使用Cocoa NSDocument體系結構,則內置少量多窗口支持:NSDocument知道其關聯窗口(通過其窗口控制器)。如果你想使用NSDocument架構,你應該閱讀Document-Based App Programming Guide for Mac

+0

我所追求的是所有這些源在主框架內打開的界面 - 即MDI界面。 – Igor

+0

macOS沒有內置的實現MDI接口的支持。您必須將內部「窗口」實現爲視圖,並且自己實現內部窗口框架(標題欄,移動/調整大小控件,關閉框)。 –

+0

我不需要MS理解它的實際MDI。我會對可以打開多個文檔的類似Xcode的界面感到滿意,這些文檔將位於一個大框架內 - 當我單擊鼠標時,在OP中解釋的場景。 – Igor

相關問題