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

StackOverflow https://stackoverflow.com/questions/823570

  •  05-07-2019
  •  | 
  •  

Вопрос

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

 -(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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top