Как сделать так, чтобы элемент строки меню отображал количество строк в таблице? - PullRequest
3 голосов
/ 05 мая 2009

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

 -(void)applicationDidFinishLaunching:(NSNotification *)aNotification { 
NSStatusItem *statusItem = [[[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength] retain]; //Create new status item instance
[statusItem setHighlightMode:YES]; //This does something, I'm sure of it.
[statusItem setTitle:[NSString stringWithFormat:@"%C",0xff50]]; //This labels it. You can also use setImage instead to use an icon. That current code will result in a item labeled "p"
[statusItem setEnabled:YES]; //Self explanatory
[statusItem setMenu:theMenu];
[statusItem setToolTip:@"TOOLTIP HA AWESOME AMIRITE?"]; //Optional, just for kicks.
}

Что мне нужно добавить, чтобы в строке меню отображалось количество строк в таблице?

1 Ответ

4 голосов
/ 05 мая 2009

Если вам не требуется обновление в реальном времени, вы можете попробовать этот подход:

1) установить делегат меню:

[theMenu setDelegate:self];

2) и реализовать метод делегата:

- (void)menuWillOpen:(NSMenu *)menu {
    NSUInteger count = [self.tableView numberOfRows];
    [[menu itemAtIndex:0] setTitle: [NSString stringWithFormat:@"%d rows", count]];
}

Этот код будет обновлять пункт меню каждый раз, когда пользователь открывает меню. Если вы хотите обновлять его каждый раз, когда что-то в таблице изменяется, вам нужно будет использовать KVO для наблюдения за контроллером массива. Вам также нужно будет использовать KVO, если вы хотите отобразить счетчик в заголовке StatusItem.

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