假设您知道如何在 a 中NSWindow
分别显示您的 UI NSStatusItem
,那么您可以通过以下方式从一个 UI“切换”到另一个 UI:
隐藏NSWindow
并显示NSStatusItem
; 或者
隐藏NSStatusItem
并显示NSWindow
.
您可以NSWindow
使用隐藏隐藏:-(void)orderOut:
,您可以使用恢复其可见性:-(void)orderFront:
。
至于您的NSStatusItem
,您可以在需要时创建(参见:)–statusItemWithLength:
并删除它(参见– removeStatusItem:
:)。
编辑:
如果您需要对 内的 UI 元素执行任何NSWindow
操作,可以通过迭代它们来实现:
for(NSView* view in [[window contentView] subviews])
{
[view ...];
}
如果你的NSWindow
内容是由 NSControls 组成的,你可以像这样禁用它们:
for(NSView* currentView in [[window contentView] subviews]) {
if( [currentView respondsToSelector:@selector(setEnabled:)] )
{
[(NSControl*)currentView setEnabled:NO];
}
}
如果您有一个复杂的控件层次结构,您可以创建一个方法并递归调用它。