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

Posted

技术标签:

【中文标题】如何使菜单栏项显示表格中有多少行?【英文标题】:How do you make a Menu Bar Item display how many rows there are in a table? 【发布时间】:2009-05-05 06:12:01 【问题描述】:

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

 -(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】:

如果您不需要实时更新,可以尝试这种方法:

1) 设置 theMenu 的委托:

[theMenu setDelegate:self];

2) 并实现委托方法:

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

每次用户打开菜单时,此代码都会刷新菜单项。如果您想在表中的某些内容发生更改时刷新它,您将需要使用 KVO 来观察阵列控制器。如果要在 StatusItem 的标题中显示计数,还需要使用 KVO。

【讨论】:

只是为了确认,这将在屏幕顶部的菜单栏中显示行数,而不是在下拉菜单中。对吗? #1 可能进入管理您的状态项的同一控制器。 #2 当您单击状态项时,它将显示在菜单项中。如果您想更改状态项的标题,最好将自己注册为数组控制器的观察者(我认为安排对象在这种情况下应该可以工作)并在 observeValueForKeyPath:ofObject:change:context: 方法中设置标题。 好的,谢谢,那么我将使用什么代码来更改状态项的标题?

以上是关于如何使菜单栏项显示表格中有多少行?的主要内容,如果未能解决你的问题,请参考以下文章

EXCEL表格设定宽度以后,文字填满了如何自动换行

CSS/JQuery:如何为表格行创建子菜单,使鼠标从行到菜单保持可见?

excle表格里如何设置使每一行都会自动调节到最合适行高?

如何在 Qt 中聚焦或显示菜单栏项

要使表格边框不显示,应该设置border的值是多少

如何在EXCEL表格里面,一次性插入多行(或多列)表格呢?请教?