Получение NSPopUpButton от NSMenuItem - PullRequest
1 голос
/ 01 февраля 2010

Мое приложение использует метод -validateMenuItem: для проверки пунктов меню. Но мне нужно проверить разные пункты меню в зависимости от того, что там есть.

Я надеялся найти способ получить ярлык всплывающего окна, но после просмотра документов я не могу найти способ ... есть идеи?

Edit: Я думал, что для этого нужно больше контекста ... мой объект модели - это JDBCSyncer (синхронизирует одну базу данных с другой), у меня окно настроек - одно, и мне нужно проверить пункты меню, основываясь на том, находится ли их название в массиве строк который представляет различные поля в таблице. Идея состоит в том, что вы выбираете поле из всплывающего окна.

Ответы [ 2 ]

3 голосов
/ 01 февраля 2010

У меня не очень хороший ответ, но как насчет чего-то такого:

- (BOOL)validateMenuItem:(NSMenuItem *)menuItem
{
    NSMenu *menu = [menuItem menu];
    if (menu == [popUpButton1 menu]) {
        return YES;
    }
    else if (menu == [popUpButton2 menu]) {
        return NO;
    }
    else (menu == [popUpButton3 menu]) {
        return YES;
    }
    else {
        return NO;
    }
}
0 голосов
/ 01 февраля 2010

Если пункты меню в этих всплывающих кнопках настолько не связаны, что вам необходимо отличать одну всплывающую кнопку от другой, возможно, вам следует создать для них отдельные объекты контроллера. Каждый контроллер будет являться целью (и, следовательно, валидатором) пунктов его всплывающих кнопок, а только этих / этих всплывающих кнопок.

Некоторые или все эти контроллеры могут также передавать представления таблицы или представления коллекции, если это имеет смысл для рассматриваемых элементов.

Это также позволяет пометить элементы меню для легкой идентификации, не беспокоясь о коллизиях тегов (один и тот же тег используется в двух или более несвязанных элементах пользовательского интерфейса), поскольку каждый контроллер будет видеть только те теги, о которых он знает. Точно так же, если контроллер использует представленные объекты (наиболее вероятно, если он динамически заполняет свои всплывающие кнопки), ему не нужно беспокоиться о том, чтобы увидеть представленные объекты, которые он не распознает.

...