NSMenuDelegate вопросы - PullRequest
       3

NSMenuDelegate вопросы

0 голосов
/ 03 августа 2010

У меня есть 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?

1 Ответ

2 голосов
/ 03 августа 2010

Вы сохранены: -menuNeedsUpdate: доступно с 10.3. : -)

Доступно в Mac OS X v10.3 и новее. Доступен как часть неофициального протокол до Mac OS X v10.6.

Я активно использую его в приложении, нацеленном на 10,5 / 10,6.

Примечание: Этот ответ относится к более ранней версии вопроса о наличии -menuNeedsUpdate:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...