【问题标题】:How to allow only one window in GUI in Swift如何在 Swift 的 GUI 中只允许一个窗口
【发布时间】:2016-05-28 18:08:33
【问题描述】:

我将Menu-Object 连接到Window Controller。为了调用Window Controller,我添加了一个快捷方式。但是在多次按下快捷方式时,会打开多个窗口。如何调用函数,计算窗口数量,如果是0,按下快捷键会打开Window Controller

我使用 Swift 作为编程语言。

【问题讨论】:

    标签: swift cocoa window nswindowcontroller


    【解决方案1】:

    您可以拥有一个静态变量,该变量在您的视图成功初始化时递增,并且在视图的 deinit 时递减。然后,您可以在初始化之前检查保护语句中的值或根据该变量设置菜单可用性。

    class WindowController: NSWindowController {
      static var count = 0
    
      override func windowDidLoad() {
        WindowController.count += 1
      }
    
      deinit {
        WindowController.count -= 1
      }
    }
    
    func createWindow() {
      guard WindowController.count = 0 else { return }
      // Create window here
    }
    

    【讨论】:

    • 对不起,我没能关注你...在哪里添加变量以及如何检查它们?
    • 一种更简单的方法是将静态变量添加到 WindowController 中,然后在菜单调用加载菜单的函数中检查变量是否为 0。在子类中您可以在 WindowDidLoad 中增加静态变量并在 Deinit 或 WindowWillClose 中减少。
    • 可以创建一个示例代码吗?我是 Swift 的新手,所以有些术语让我感到困惑。所以......我应该在哪里创建变量?然后,在创建之后,我必须将Menu-ObjectviewDidLoad()-Function 连接起来,我必须检查 var 是否为 0?或者是什么意思?总之,一个例子真的可以帮助我:)
    • 我在答案中添加了一个代码示例。 WindowController 是您只想拥有其中一个的窗口,而函数 createWindow() 是您的菜单项将调用的。
    • 我无法将Menu-Object与函数连接起来?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-24
    • 2012-10-16
    • 1970-01-01
    • 1970-01-01
    • 2016-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多