首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查窗口是否打开?

如何检查窗口是否打开?
EN

Stack Overflow用户
提问于 2020-07-24 14:50:38
回答 1查看 87关注 0票数 0

我正在从主菜单项( window下的命令2)打开一个窗口,名为"Window2“。因此,如果再次单击菜单项,它将再次打开"Window2“,而不是使现有窗口成为键窗口并禁用相应的菜单项。下面是我在我的AppDelegate类中实现它的努力,因为变量"lmWindowController“总是返回nil,window2的实例被多次打开,这里我遗漏了什么?

代码语言:javascript
复制
class AppDelegate: NSObject, NSApplicationDelegate {
    
    var lmWindowController: LocalisationMappingWindowController?
    
    func applicationDidFinishLaunching(_ notification: Notification) {
        
    }
    
    @IBAction func showLocalisationMappingWindowController(_ sender: Any) {
        
        if (!(lmWindowController != nil)) {
        let storyboard = NSStoryboard(name: NSStoryboard.Name(rawValue: "LocalisationMapping"), bundle: Bundle.main)
        if let windowController: NSWindowController = storyboard.instantiateController(withIdentifier: NSStoryboard.SceneIdentifier(rawValue: "LocalisationMappingWindowController")) as? NSWindowController{
             windowController.showWindow(windowController.window)
             windowController.window?.makeKeyAndOrderFront(nil)
            }
        } else {
            lmWindowController?.window?.makeKeyAndOrderFront(nil)
        }

    }
    
    override func validateMenuItem(_ menuItem: NSMenuItem) -> Bool {
        var enable = self.responds(to: menuItem.action)
        
        if menuItem.action == #selector(showLocalisationMappingWindowController(_:)) {
            for window in NSApplication.shared.windows {
                if window.title == "Localization Mapping" {
                    enable = false
                }
            }
        }
        return enable
    }
}
EN

回答 1

Stack Overflow用户

发布于 2020-07-24 16:04:21

showLocalisationMappingWindowController中,加载了一个新的windowController,但lmWindowController没有改变。添加lmWindowController = windowController

代码语言:javascript
复制
@IBAction func showLocalisationMappingWindowController(_ sender: Any) {
    
    if (!(lmWindowController != nil)) {
        let storyboard = NSStoryboard(name: NSStoryboard.Name(rawValue: "LocalisationMapping"), bundle: Bundle.main)
        if let windowController: NSWindowController = storyboard.instantiateController(withIdentifier: NSStoryboard.SceneIdentifier(rawValue: "LocalisationMappingWindowController")) as? NSWindowController{
            windowController.showWindow(windowController.window)
            windowController.window?.makeKeyAndOrderFront(nil)
            lmWindowController = windowController
        }
    } else {
        lmWindowController?.window?.makeKeyAndOrderFront(nil)
    }

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63068300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档