如何在基于非文档的 Storyboard 应用程序中处理 applicationShouldHandleReopen

2024-03-27

我能想到的最好的办法是:

func applicationShouldHandleReopen(sender: NSApplication, hasVisibleWindows flag: Bool) -> Bool {

    if !flag{
        let sb = NSStoryboard(name: "Main", bundle: nil)
        let controller = sb?.instantiateInitialController() as NSWindowController

        controller.window?.makeKeyAndOrderFront(self)
        self.window = controller.window
    }

    return true
}

但这需要我在应用程序委托上设置对窗口的引用。由于应用程序最初启动时不需要这样做,所以我非常肯定我做错了一些事情,同时遗漏了一些明显的东西。

这个解决方案似乎也有效

func applicationShouldHandleReopen(sender: NSApplication, hasVisibleWindows flag: Bool) -> Bool {

    if !flag{

        for window in sender.windows{
            if let w = window as? NSWindow{
                w.makeKeyAndOrderFront(self)
            }
        }
    }

    return true
}

这是我也从你的内部找到的第三个解决方案NSApplicationDelegate:

var mainWindow: NSWindow!

func applicationDidFinishLaunching(aNotification: NSNotification) {
    mainWindow = NSApplication.sharedApplication().windows[0] as! NSWindow
}

func applicationShouldHandleReopen(sender: NSApplication, hasVisibleWindows flag: Bool) -> Bool {
    if !flag{
        mainWindow.makeKeyAndOrderFront(nil)
    }

    return true
}

我不知道为什么苹果不提供这方面的指导,或者让你从故事板为窗口设置出口。这似乎是一个常见的需要。也许我仍然缺少一些东西。


Swift 3:在AppDelegate.swift中添加一个NSWindow类型的变量

lazy var windows = NSWindow()

并实现 applicationShouldHandleReopen:

func applicationShouldHandleReopen(_ sender: NSApplication, hasVisibleWindows flag: Bool) -> Bool {
    if !flag {
        for window in sender.windows {
            window.makeKeyAndOrderFront(self)
        }
    }

    return true
}

或者使用 forEach:

func applicationShouldHandleReopen(_ sender: NSApplication, hasVisibleWindows flag: Bool) -> Bool {
        if !flag {
            sender.windows.forEach { $0.makeKeyAndOrderFront(self) }
        }

        return true
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在基于非文档的 Storyboard 应用程序中处理 applicationShouldHandleReopen 的相关文章

随机推荐

  • 如何监听Hyperledger Fabric中的事件(commit事件)?

    我们建立了一个结构服务器 并将一些事务放入其中 我们有一些应用程序将与结构服务器配合 这是一个情况 应用程序发送交易fabric sdk java or fabric sdk node 面料执行chaincode 结构通知应用程序结果 应用
  • python中函数的精确计时

    我正在 Windows 上用 python 编程 希望准确测量函数运行所需的时间 我编写了一个函数 time it 它接受另一个函数 运行它 并返回运行所花费的时间 def time it f args start time clock f
  • ORA-02270: 此列列表没有匹配的唯一键或主键

    我有一张表 结构是 CREATE TABLE COURSE ACCREDITED COURSE ID VARCHAR2 50 NOT NULL ENABLE ACCREDITATION BODY ID VARCHAR2 50 NOT NUL
  • 如何覆盖 Material-ui 的选项卡选择颜色?

    我正在使用 Materialui tabs 主题构建 React 16 13 0 应用程序 https material ui com api tab https material ui com api tab 我在我的组件中创建了这些样式
  • 张量流是否通过pdf传播梯度

    可以说 分布函数定义如下 dist tf contrib distributions Normal mu sigma 并从分布中抽取样本 val dist pdf x 并且该值在模型中用于预测变量 X hat f val loss tf n
  • 使用指针传递引用和值[重复]

    这个问题在这里已经有答案了 我不明白为什么将指针传递给函数不会更改传入的数据 如果函数原型如下所示 void func int p 并且 func 为 p 分配了内存 为什么不能在函数外部使用它 我以为指针就是地址 虽然这样的事情符合你的期
  • 我如何使用肘节检查连接性?

    我需要使用连接库检查应用程序内每个页面的连接性 所以我将在提供者内部使用一肘 问题是何时关闭流以便在用户关闭应用程序时可以处理它 像这样 import package connectivity connectivity dart overr
  • 比较 sbt 和 Gradle [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在深入研究 Scala 并注意到 sbt 我对 java groovy 项目中的 Gradle 非常满意 而且我知道 Gradle 有一个
  • 使用 R 在时间序列图中标记 X 轴

    我对 R 有点陌生 一般绘图经验有限 我已经能够使用zoo将我的数据作为R中的时间序列对象来获取 但是我很难正确标记xaxis 如果这一切的话 当我绘制动物园对象时 plot z x 轴仅显示一个标签 即 2010 年 该系列从 2009
  • 在Javascript中实现迷宫生成算法[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我了解 深度优先 迷宫生成算法 但我
  • 在每第 3 个 div Jquery 之后附加 Span 标签

    我正在寻找在每三个 div 标签之后放置一个 span 标签的解决方案 HTML div class grid 15 div class grid 5 p Sun p div div class suggest nudge up span
  • 护照认证失败导致重定向循环

    我正在使用带有 Facebook 身份验证的 Node Express 和 Passport 我有以下路线 当 facebook auth callback是回调url function render page req res var us
  • 不推荐使用带大括号的数组和字符串偏移访问语法

    我刚刚将我的 php 版本更新到 7 4 我注意到弹出了这个错误 不推荐使用带大括号的数组和字符串偏移访问语法 这是我的代码的一部分 它触发了上述错误 public function getRecordID string zoneID st
  • 无法在 IOS 上通过 CORS 发送凭据

    我有一个恶作剧问题 在解决这个问题很长时间后我来找你 我有一个具有以下规格的混合应用程序 Ionic 3 9 2 Angular 5 2 11 Cordova Android 8 1 0 and iOS 5 1 1 Cordova 8 0
  • UISearchBar显示错误:文本太左,与放大镜图标重叠

    我遇到了最奇怪的显示错误UISearchBar 这是我的代码 在另一个应用程序中完美运行 我在代码中创建搜索栏 因为 xib 文件不可行 searchBar UISearchBar alloc initWithFrame CGRectMak
  • 将 ForEach 与绑定数组一起使用 (SwiftUI)

    我的目标是从 JSON 动态生成表单 除了生成 FormField 视图 基于 TextField 并绑定到动态生成的视图模型列表之外 我已将所有内容放在一起 如果我将 FormField 视图替换为普通的 Text 视图 则效果很好 请参
  • 如何以编程方式设置开始标签和结束标签之间的文本格式,然后删除标签

    编辑 以下工作与 Google Apps 脚本有关 用于格式化 Google 文档中的文本 我不熟悉 JavaScript 实际上只完成了一些 R 编码 因此这项工作是对我可以在 google 上搜索到的内容进行一些解析以及一些尝试和错误
  • 是否有使用游标或智能获取的 Ruby ORM?

    我正在寻找 Ruby ORM 来替代 ActiveRecord 我一直在研究 Sequel 和 DataMapper 它们看起来不错 但似乎都没有做基本的事情 当您不需要时 不将所有内容加载到内存中 我的意思是我已经在有很多行的表上的 Ac
  • 如何从 Android 调用 RESTful Web 服务?

    我已经使用 jersey 框架和 java 在 netbean IDE 中编写了 REST Web 服务 对于每个请求用户都需要提供用户名和密码 我知道身份验证不好 使用curl命令 例如 curl u 用户名 密码 X PUThttp l
  • 如何在基于非文档的 Storyboard 应用程序中处理 applicationShouldHandleReopen

    我能想到的最好的办法是 func applicationShouldHandleReopen sender NSApplication hasVisibleWindows flag Bool gt Bool if flag let sb N