Создание динамического подсчета NSMenuItems - PullRequest
4 голосов
/ 20 ноября 2011

В настоящее время я борюсь с динамическим пользовательским интерфейсом в Mac OS X. Я создал элемент строки меню и хочу добавить в него динамическое количество элементов MenuItem.

Количество элементов зависит от сетевых интерфейсов накомпьютер.Мой Mac получил два интерфейса, другой получил, может быть, только один или три.

Создание Элементов не проблема.Но я хочу сослаться на элементы в следующем коде.

-(void)addItems
{
    NSMenuItem *menuItem = [menu addItemWithTitle:@"Start" action:@selector(click:) keyEquivalent:@""];
}

Затем я хочу обновить заголовок элемента:

-(IBAction)click:(id)sender
{
    [menuItem setTitle:@"Clicked!"];
}

Причины, действие "click" возвращаетнеобъявленный идентификатор (menuItem).Проблема в том, что я не могу объявить их в заголовочном файле, потому что они являются динамическими, и они, вероятно, могут достичь количества элементов 100, поэтому я не могу объявить как 10 элементов и использовать их или нет.

Как мне справиться с этими ситуациями?Надеюсь, вы можете помочь мне!

Привет, Джулиан

1 Ответ

5 голосов
/ 29 ноября 2011

Просто столкнулся с этой проблемой, и это довольно просто.Вы можете вручную отслеживать ваши указатели NSMenuItem, но самый простой способ - использовать теги.Когда вы создаете пункт меню, сделайте следующее:

item = [subMenu addItemWithTitle:@"A1" action:@selector(testing123:) keyEquivalent: @""];
[item setTag:23];

А затем в вашем делегате:

-(IBAction)testing123:(id) sender
{
    NSMenuItem * item = (NSMenuItem*)sender;
    int cmdVal = [item tag];
    printf("Testing123 - %d\n", cmdVal);
}

И все.Просто добавьте 10 элементов и присвойте им другой тег.Ура!

...