也許我是以這種錯誤的方式來的,但在我的應用程序中,我有可加載的包,它將NSMenuItem
條目添加到主菜單。applicationDidFinishLaunching:在從NIB加載NSDocument後執行
我遍歷所有包並確定要添加的菜單項,然後相應地添加它們。
現在的問題是,這些代碼應該放在基於文檔的應用程序中去哪裏?
起初,我把它放在我NSDocument子類-windowControllerDidLoadNib:
方法,但是這有重複相同的項目n
時代不需要的副作用,其中n
是我打開的文檔數(即它不是一個運行一個放置代碼的地方)。
於是我試圖把代碼在我NSApplicationDelegate
的-applicationDidFinishLaunching:
方法,它確實意味着它只能運行一次,但在文檔跳起並顯示前-applicationDidFinishLaunching:
執行我現在面臨一個問題(或者至少在它結束之前)。
哪裏有放置代碼的權利,可以在啓動時動態地將菜單項添加到基於文檔的應用程序?
-menuNeedsUpdate:看起來很有幫助,謝謝。但是,這是如何在多文檔應用程序(例如我的)中發揮作用的,每個文檔都要對菜單進行更改?似乎相當有限,它是一個委託,而不是一個通知,因此多個對象可以響應。當用戶在文檔之間切換時,我需要調整各種菜單項的狀態。 – d11wtq 2010-11-04 15:09:56
劃痕。看起來像是發送了「NSMenuDidBeginTrackingNotification」。我的不好:) – d11wtq 2010-11-04 15:11:43
所以你的文檔*確實對插件菜單的狀態有一個發言權?我想你需要更詳細地闡明你的問題。 – 2010-11-04 15:20:20