Как сделать так, чтобы пункт меню отображал количество строк в таблице?
Вопрос
У меня есть таблица основных данных, и я бы хотел, чтобы в строке меню отображалось количество строк в таблице. Я уже создал пункт меню, используя этот код:
-(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) установить делегат меню:
[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.