У меня есть NSMenu, который содержит как статические, так и динамически создаваемые NSMenuItem (статическое значение NSMenuItem, созданное в Interface Builder, динамическое значение NSMenuItem, созданное во время выполнения).Хотя я работаю на 10.6, мое приложение также предлагает поддержку 10.5.
Мое меню состоит из ряда динамических NSMenuItem, которые содержат подменю.В настоящее время я использую метод parentItem: метод NSMenuItem (исключая 10.6), чтобы получить элемент родительского меню при нажатии на элемент подменю.
РЕДАКТИРОВАТЬ: Вот грубая попытка создания руководстваparentItem: метод, но он не особенно интуитивен.Конечно, есть лучший способ?
- (NSMenuItem *)findParentByChild:(NSMenuItem *)child {
for(int x = 0; x < [statusBarMenu numberOfItems]; x++) {
// Avoid any statically created menu items
if([[statusBarMenu itemAtIndex:x] tag] != 100) {
NSMenu *submenu = [[statusBarMenu itemAtIndex:x] submenu];
if(submenu != nil) {
for(int y = 0; y < [submenu numberOfItems]; y++) {
// This looks like our parent
if([submenu itemAtIndex:y] == child) {
return [statusBarMenu itemAtIndex:x];
}
}
}
}
}
return nil;
}
Как лучше всего добиться этого путем, совместимым с 10,5 и 10,6?