6 macos nsviewcontroller swift
我有一个带有多个 ViewController 的应用程序,我需要检查 AppDelegate 中当前哪个 ViewController 处于活动状态。例如,我将创建一个运行函数的计时器,该函数检查特定的 ViewController 是否处于活动状态,如果是,则执行一些操作。有没有办法做到这一点?
NSApplication.sharedApplication().keyWindow
Run Code Online (Sandbox Code Playgroud)
将返回具有键盘访问权限的当前窗口。从那里您可以内省 NSWindow 对象以确定它是什么。
另外,如果您需要它以编程方式激活窗口。
NSApplication.sharedApplication().windows
Run Code Online (Sandbox Code Playgroud)
将返回当前打开的应用程序中的 NSWindows 数组。
window.makeKeyAndOrderFront(sender)
Run Code Online (Sandbox Code Playgroud)
即使最小化,也会使窗口成为焦点,并使其成为键盘控制的关键窗口。
window.makeKeyWindow()
Run Code Online (Sandbox Code Playgroud)
只会使窗口成为焦点并使其成为关键窗口。它不会使其脱离最小化。
您可以通过访问 AppDelegate 或其他任何地方的根视图控制器来获取此信息:
let activeController = window.rootViewController
Run Code Online (Sandbox Code Playgroud)
但是,由于您想使用计时器来执行该视图控制器中的某些代码,因此发送 NSNotification 可能更可取。由于“活动”视图控制器应该知道它是活动的,因此您可以专门连接和断开通知侦听器。
| 归档时间: |
|
| 查看次数: |
4170 次 |
| 最近记录: |