macOS Cocoa(Objective-C)如何以编程方式关闭Storyboard窗口
解决macOS Cocoa(Objective-C)中Storyboard窗口编程关闭问题
嘿,我之前从XIB转Storyboard的时候也踩过这个坑!你原来用的[_MainWindow close];在XIB里能正常工作,是因为XIB里可以直接把窗口对象关联成全局的IBOutlet,但Storyboard的窗口管理逻辑不一样,直接这么调用肯定失效。
Pat_Morita给的方案完全可行,你直接用这段代码就行:
[self.secondView.window close];
这里的核心逻辑是:在Storyboard中,窗口是依附在视图层级上的,你得通过已经关联到ViewController的某个视图(比如这里的secondView)来获取它所属的窗口实例。记得要先确保secondView已经在Storyboard里正确绑定到ViewController的IBOutlet哦,不然会出现空指针,窗口还是关不了。
另外给你补个小技巧:如果是要关闭应用的主窗口,也可以用[NSApp mainWindow] close];,这个方法不管是XIB还是Storyboard环境都能正常用,通用性更强。
内容的提问来源于stack exchange,提问作者user4187045
相关产品推荐
相关产品推荐

