[NSApp setActivationPolicy: NSApplicationActivationPolicyAccessory];
但我仍然拥有打开应用程序时出现的NSWindow.
我怎么能阻止这个?我也希望能够重新打开它.
我想出了一个可怕的方法来关闭它:
[_mainVIEw setFrame:CGRectMake(0,0)];
其中_mainVIEw是我的vIEwcontroller中的主要NSVIEw,它连接到nswindow.
然后我希望能够再次打开窗口,但这次是一张桌子.但我得到错误:
<Warning>: voID CGSUpdateManager::log() const: conn 0x18de3 token 0x31fffffffffdafd
将帧重置为原始大小时.
此外,如果我关闭NSVIEw,那意味着我无法再次重新打开视图.
这是对应用程序的冗长解释,该应用程序可以控制vIEwcontroller所在的窗口是打开还是关闭.
解决方法 创建仅显示在状态栏中而不显示在Dock或Application Tabbing中的Nsstatusbar项目应用程序.而不是显示任何正常的菜单.即文件,编辑,查看等..您需要将Application is agent (UIElement) – (布尔值)YES键 – 值添加到应用程序info.pList.
并确保在属性检查器中关闭窗口’可见的启动’.
更新:
在无故事板应用程序(OS X)中
在IB中为窗口设置’可见时启动’关闭将停止在启动时出现的窗口.
但是有一个故事板应用程序.这不行.
“可见时启动”已经设置为关闭.但无论如何,窗口将始终显示.
(我认为这是苹果设计故事板和人机界面指南的一部分.也许是因为它们来自iOS,应该总是有一个窗口.)
可能有一些方法可以改变这种行为,但我发现如果你在NSWsowController的Attributes Inspector中取消选中初始控制器
这将停止启动时显示的窗口.这是有道理的,因为该应用程序现在没有任何指示,最初显示任何内容.
要打开窗口,您只需将菜单项链接到IB的NSWindowController的Presenting Segue Show:方法即可.
如果要以编程方式打开窗口,则必须重新指向代码中的控制器.
>在IB中再次选择NSWindowController
>转到IDentity Inspector.
>为Storyboard ID提供标识“Main”
>现在转到AppDelegate.h文件并添加Property和IBAction:
@property (strong) IBOutlet NSWindowController *winController; -(IBAction)showWindow:(ID)sender;
>然后转到AppDelegate.m文件并在applicationDIDFinishLaunching中添加此代码
nsstoryboard *storyBoard = [nsstoryboard storyboarDWithname:@"Main" bundle:nil]; NSWindowController * main = [storyBoard instantiateControllerWithIDentifIEr:@"Main"]; _winController = main;
(注意只是通过直接将它与AppDelegate中的属性相关联来添加控制器对我来说不起作用)
>现在将IBAction代码添加到AppDelegate.m
-(IBAction)showWindow:(ID)sender { [_winController showWindow:self]; }
您需要将IBAction正常链接到您希望通过IB打开窗口的菜单项.
总结以上是内存溢出为你收集整理的objective-c – 如何关闭OSX窗口?全部内容,希望文章能够帮你解决objective-c – 如何关闭OSX窗口?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)