我的应用程序在 OS X 菜单栏中放置了一个 NSStatusItem。在某些时候,我想从系统 NSStatusBar 中删除菜单栏图标。(此时我仍想保留 NSStatusItem,并向其发送消息……只是没有显示。)
我正在使用此方法从状态栏中删除 statusItem:
[[NSStatusBar systemStatusBar] removeStatusItem:statusItem];
我想在稍后的某个时间检查 statusItem 当前是否显示在状态栏中。我不希望通过布尔值等来跟踪这一点。
我认为这个检查会起作用:
if ([[NSStatusBar systemStatusBar] isEqualTo:[statusItem statusBar]])
{
NSLog(@"statusItem's bar == system bar, before");
}
NSLog(@"removing from systemStatusBar");
[[NSStatusBar systemStatusBar] removeStatusItem:statusItem];
if ([[NSStatusBar systemStatusBar] isEqualTo:[statusItem statusBar]])
{
NSLog(@"statusItem's bar == system bar, after removal");
}
这输出:
statusItem's bar == system bar, before removal
removing from systemStatusBar
statusItem's bar == system bar, after removal
所以 statusItem 的 statusBar 没有明显的变化。
NSStatusBar类引用似乎不包含任何适用的方法。
有没有办法检查某个 NSStatusItem 是否在主系统栏中?