It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened,
visit the help center。
7年前关闭。
我有一个具有两种类型的界面的应用程序-它以菜单栏应用程序和窗口应用程序形式存在。但是,这两种状态不能同时存在。
如何允许用户单击允许他/她更改状态的按钮?
例如,如果我的应用程序当前是一个窗口,则当用户单击按钮时,我希望它更改为菜单栏应用程序,并且该窗口应该消失。但是,如果用户再次单击,所有菜单栏信息应消失,窗口应重新出现。
该应用程序的系统负担很重,因此我无法负担菜单栏版本和窗口版本的同步工作。
我将如何完成?
我正在研究OSX Mountain Lion,并且需要Objective-C / C中的解决方案。
假设您知道如何在NSWindow
中和分别在NSStatusItem
中显示UI,则可以通过以下方式从一个UI“切换”到另一个UI:
隐藏NSWindow
并显示NSStatusItem
;要么
隐藏NSStatusItem
并显示NSWindow
。
您可以使用:NSWindow
隐藏-(void)orderOut:
,并且可以使用:-(void)orderFront:
恢复其可见性。
至于您的NSStatusItem
,您可以根据需要创建(参见:–statusItemWithLength:
)并将其删除(参见:– removeStatusItem:
)。
编辑:
如果您需要对NSWindow
内的UI元素执行任何操作,可以通过遍历它们来实现:
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];
}
}
如果您具有复杂的控件层次结构,则可以创建一个方法并递归调用它。