2011-05-31 60 views
4

我有一個基於文檔的應用程序。每個文檔可以有多個窗口。每個窗口都會自動添加到「窗口」菜單。但是,它們或多或少隨機且無用的順序添加。我希望窗口標題根據它們所屬的NSDocument進行組織,類似於XCode或Photoshop所做的。如何組織「窗口」菜單?

我該如何做到最好?我如何防止AppKit的默認行爲將所有窗口添加到此特殊菜單中,並且我應該在哪裏放置以「正確」方式添加菜單項的代碼?我不想把處理程序放到每個窗口控制器中!

回答

1

它確實看起來像這是Cocoa應該自動執行的操作。我不知道它是否確實,但首先要檢查的是窗口控制器是否正確連接到他們的文檔。您的文檔子類的windowControllers屬性是否包含所有正確的對象?

如果這樣做不好,那麼從NSWindow's reference它看起來像是唯一的方法來防止其標題被設置添加到Windows菜單的窗口是-[NSWindow setExcludedFromWindowsMenu:]。看起來你想在所有窗口中調用它,然後設置一個對象(可能在MainMenu筆尖),該對象負責所有窗口的位置,並在Windows菜單(通過NSApplication的方法)中對其進行分組。您可能需要放入特殊的禁用物品等才能使分組看起來正確。我希望即使您之前要求將它們排除在外,仍然可以手動添加窗口。

+0

我沒有添加窗口到windowControllers數組,但Cocoa沒有自動組織菜單。猜猜我必須手動構建窗口菜單並將代碼添加到每個窗口控制器......正是我想避免的。 – 2011-06-29 17:15:12

+1

如果有任何安慰,您可以將功能添加到公共超類;或者更好的是,有一個監督對象的作用類似於'NSDocumentController'(甚至是一個'NSDocumentController'子類),它將所有文檔的windowControllers按摩到組織好的菜單項中。 – 2011-06-29 17:30:22