cocoa - 如何使菜单栏项显示表格中有多少行?

标签 cocoa core-data

我有一个核心数据表,希望菜单栏项显示表中有多少行。我已经使用以下代码创建了菜单栏项:

 -(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) 设置菜单的委托(delegate):

[theMenu setDelegate:self];

2)并实现委托(delegate)方法:

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

每次用户打开菜单时,此代码都会刷新菜单项。如果你想在每次表中的内容发生变化时刷新它,你将需要使用 KVO 来观察数组 Controller 。如果您想在 StatusItem 的标题中显示计数,您还需要使用 KVO。

关于cocoa - 如何使菜单栏项显示表格中有多少行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/823570/

相关文章:

ios - 使用变量创建 NSPredicate

objective-c - 使用 CATiledLayer 绘制 Core Data 实体信息时如何正确处理线程

ios - 核心数据类的重新声明无效

objective-c - 处理 NSJSONSerialization 中的 Foundation 对象时发生内存泄漏

iphone - iPhone 中的核心数据默认使用哪个持久存储

objective-c - 测试使用中央调度的 GUI 组件

cocoa - Swift:尝试在循环中更新 NSTextField,但它只获取最后一个值

swift - 使用 objectWithID 获取所有值为 null 的托管对象

objective-c - 将数据传递给委托(delegate)

objective-c - 在方法内设置类属性时,是否需要释放它?