2011-03-08 24 views
11

在閱讀一些示例代碼時,請注意,在選擇「創建基於文檔的應用程序」選項時,在IB中設置主窗口標題不起作用。該窗口將以「無標題」作爲其標題出來。我們需要重寫 - (NSString *)displayName {}在MyDocument:NSDocument中來設置窗口標題。只是希望xcode的一些專家能夠解釋爲什麼會這樣。也就是說,當項目最初生成時,當我們檢查「創建基於文檔的應用程序」選項時,添加到系統中的是什麼?當在Xcode中選擇「創建基於文檔的應用程序」選項時會發生什麼?

回答

13

瞭解當您從Xcode中的模板創建項目時,Xcode並不會真正生成任何代碼。當然,它可能會填寫你的姓名,項目名稱等幾個空白。但是你得到的基本上是你選擇的項目類型的罐裝啓動代碼。檢查「基於文檔」選項時添加的內容是爲您的應用程序定製了一個合理名稱的NSDocument子類。

看看蘋果的「人機界面指南」,如this,你會發現文檔窗口應該根據它們顯示的文檔標題。因此,基於文檔的應用程序的默認行爲是將標題設置爲文檔文件的文件名。

最後,查看的參考頁面,你會發現你所看到的行爲是NSDocument類的一部分。特別是,如果您查看-displayName方法,您將找到有關如何正確定製窗口標題的信息。

+1

感謝您的詳細解釋... – Stanley 2011-03-08 03:38:02

2

窗口控制器可以自由地覆蓋給予IB窗口的標題。在基於非文檔的應用程序中,默認的窗口控制器將使用窗口的標題,因爲它們沒有理由不這樣做。但是,當文檔創建它的窗口控制器時,它會告訴他們它們已連接到它。然後他們查看文檔的displayName屬性並更新窗口標題作爲響應。默認實現只是簡單地將窗口的標題設置爲與文檔相同,在文件保存之前,該文檔是無標題的。

+0

很高興知道「無標題」標題背後的確存在原因。感謝您指出。沒有你的答案,要知道爲什麼它應該是「無題」,特別是對於初學者來說,並不容易...... – Stanley 2011-03-08 08:35:23

+0

你對窗口控制器行爲的描述對像我這樣的新來者非常有用。 – Stanley 2011-03-08 22:06:21

相關問題