【问题标题】:How do you re-open a closed window created in the storyboard in OS X如何重新打开在 OS X 的故事板中创建的关闭窗口
【发布时间】:2015-06-02 11:59:36
【问题描述】:

我的问题对这个问题很重要,但答案似乎不适用于 Swift/Storyboards。 Cocoa: programmatically show the main window after closing it with X

基本上,我有一个或多或少带有菜单、窗口和 ViewController 的默认应用程序。如果用户在应用程序运行时关闭了窗口,我该如何重新打开它?

我在应用程序中创建了一个操作,将连接委托给“打开”菜单项。在这个函数中,我想确保窗口是可见的。因此,如果用户关闭了它,它应该会重新出现。但我不知道如何访问关闭的窗口。 Storyboard 似乎不允许我在我的应用委托中为我的窗口创建一个出口。

【问题讨论】:

    标签: macos swift xcode-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
        }
    }
    

    就是这样,非常适合我。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-18
      • 1970-01-01
      • 2015-03-15
      相关资源
      最近更新 更多