如何重新打开在 OS X 的故事板中创建的关闭窗口
Posted
技术标签:
【中文标题】如何重新打开在 OS X 的故事板中创建的关闭窗口【英文标题】:How do you re-open a closed window created in the storyboard in OS X 【发布时间】:2015-06-02 11:59:36 【问题描述】:我的问题对这个问题很重要,但答案似乎不适用于 Swift/Storyboards。 Cocoa: programmatically show the main window after closing it with X
基本上,我有一个或多或少带有菜单、窗口和 ViewController 的默认应用程序。如果用户在应用程序运行时关闭了窗口,我该如何重新打开它?
我在应用程序中创建了一个操作,将连接委托给“打开”菜单项。在这个函数中,我想确保窗口是可见的。因此,如果用户关闭了它,它应该会重新出现。但我不知道如何访问关闭的窗口。 Storyboard 似乎不允许我在我的应用委托中为我的窗口创建一个出口。
【问题讨论】:
【参考方案1】:这很容易存档,即使它不是一个优雅的解决方案。为您的主窗口控制器向您的应用程序委托添加一个新属性。在以下示例中,我将控制器称为MainWindowController
。
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate
var mainWindowController: MainWindowController? = nil
func applicationShouldHandleReopen(sender: NSApplication, hasVisibleWindows flag: Bool) -> Bool
mainWindowController?.window?.makeKeyAndOrderFront(self)
return false
在主窗口控制器的初始化中,我在应用委托中注册了控制器:
class MainWindowController: NSWindowController
override func windowDidLoad()
super.windowDidLoad()
// ...initialisation...
// Register the controller in the app delegate
let appDelegate = NSApp.delegate as! AppDelegate
appDelegate.mainWindowController = self
就是这样,非常适合我。
【讨论】:
以上是关于如何重新打开在 OS X 的故事板中创建的关闭窗口的主要内容,如果未能解决你的问题,请参考以下文章
从 AppDelegate 访问在故事板的 tableview 中创建的视图?
如何在 MyScene(SKScene 的子类)中打开 xib 或故事板窗口?
如何使用 MAC OS MATLAB 读取在 windows MATLAB 中创建的 .mat 文件