2012-03-24 3 views
0

У меня есть NSMenu с 2 пунктами по умолчанию (вверху).NSMenu с 2 стандартными + переменными номерами NSMenuItems

Тогда остальное меню будет заполнено.

Я хочу, чтобы «сохранить» состояние начального меню (с двумя элементами в нем) и добавить элементы в это (оригинальное) меню; и не просто продолжать добавлять и добавлять.

Итак, если мне нужно добавить другие предметы, их нужно будет добавить в начальное меню.

Пример:

  • Меню В начале: A B |
  • Меню После этого пользователя: A B | C D E
  • Меню пользователя: A B | G H I J K
  • и т.д.

Как я должен идти об этом? (я попытался «сохранить» начальное меню, а затем «скопировать» это в текущее меню, чтобы я мог добавлять элементы поверх него, но он не работал ...: -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

Это немного сбивает с толку то, что вы хотели сделать !. (или я толстый) Можете ли вы немного улучшить, и что такое SetCurrentMenu: ??. Вы говорите о подменю или элементах меню, таких как файл, редактирование, просмотр – markhunte

ответ

1

Если вы говорите пункты меню в меню, вы можете удалить все, кроме первых 2-х элементов в цикле, когда вы хотите, чтобы вернуться в исходное меню. Если у вас есть меню с пунктами 2 по умолчанию под названием UserMenu, просто сделать это:

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

}

+0

Я уже думал об этом (совершенно очевидном) решении ... и да, это исправлено! Спасибо большое! ;-) –