2010-08-17 154 views
0

我在同一個應用程序中有多個菜單,並希望在它們之間共享子菜單。跨多個NSMenus共享NSMenuItem

爲簡單起見,假設一個是主菜單,其他碼頭平鋪菜單..

我已經得到了含有相當多的項目(假設字體名稱)子菜單,其中有許多我由於各種原因需要保留iboutlet引用。

在IB中我找不到任何「共享」這些子菜單的方法,所以我最終複製了IB定義(即在兩個不同的位置手動重新創建每個項目),而保留對兩個nsmenuitems的引用不只是一個,等等。這不是很好。

有沒有什麼方法可以在多個NSMenus之間共享子菜單定義?

我試過在IB中創建一個頂級菜單項,但是我似乎無法將它鏈接到菜單定義中的任何東西。除此之外,我擔心即使我以編程方式設法執行此操作,它可能會搞亂綁定,響應者層次結構,內存管理等。

是否有最佳做法?有人做到了嗎?結果如何?

回答

1

如果相同的控制器是所有菜單項的目標,則將其設置爲其委託,並使其實施NSMenuDelegate協議 - 特別是numberOfItemsInMenu:menu:updateItem:atIndex:shouldCancel:方法。每個菜單都會詢問你應該有多少物品,創建儘可能多的物品來彌補赤字,然後要求你填寫它們(包括設置他們的動作和可能的目標)。

結果是您的代碼定義兩個菜單中的一個地方。

+0

哇,謝謝你花時間分享一下。好想法! – 2010-08-19 15:11:05