2012-03-24 2 views
0

J'ai un NSMenu avec 2 éléments par défaut (en haut de celui-ci).NSMenu avec 2 standard + nombre variable de NSMenuItems

Ensuite, le reste du menu sera rempli. Ce que je veux, c'est «enregistrer» l'état du menu initial (avec les deux éléments) et ajouter des éléments à ce menu (original); et pas seulement continuer à ajouter et ajouter. Par conséquent, si je dois ajouter d'autres éléments, ceux-ci devront être ajoutés dans le menu initial.

Exemple:

  • Menu Au début: A B |
  • Menu après que l'utilisateur l'a fait: A B | C D E
  • Menu après que l'utilisateur fait cela: A B | G H I J K
  • etc

Comment dois-je aller à ce sujet? (J'ai essayé "sauver" le menu initial, puis "copier" cela au menu actuel, de sorte que je pourrais ajouter des éléments sur le dessus, mais cela n'a pas fonctionné ...: -S)


[DOC_UI setCurrentMenu:[[DOC_UI originalMenu] copy]]; 

// I'm adding the items here 

for (NSMenuItem* mi in [[DOC_UI currentMenu] itemArray]) 
     NSLog(@"orig :: mi : %@",[mi title]); 

/* The weird thing is that the items ARE NSlogged, but the change is NOT reflected. */ 
/* (When I was just adding to the existing items, the items did show up...) */ 
+0

Il est un peu confus à ce que vous voulez faire !. (ou je suis épais) Pouvez-vous élaborer un peu mieux, et qu'est-ce que setCurrentMenu: ??. Vous parlez de sous-menus ou de menuitems comme file, edit, view – markhunte

Répondre

1

Si vous parlez des éléments de menu d'un menu, vous pouvez supprimer tous, mais les 2 premiers articles dans une boucle quand vous voulez revenir à votre menu original. Si vous avez un menu avec 2 éléments par défaut appelés usermenu, faites ceci:

-(void)removeMenuItems { 
for (NSInteger i=self.userMenu.itemArray.count - 1; i>1; i--) { 
    [self.userMenu removeItemAtIndex:i]; 
} 

}

+0

J'ai déjà pensé à cette solution (assez évidente) ... et oui, c'est corrigé! Merci beaucoup quand même! ;-) –