【发布时间】:2019-10-14 18:50:17
【问题描述】:
我有一个非常简单的 SwiftUI 应用程序,它在菜单栏中运行,并且应该从后台的重复计时器中定期打开一个应用程序窗口(整个应用程序中只有一个窗口/视图)。
如何从代码中实际打开应用程序窗口?
这是一个简化的 AppDelegate.swift 示例,展示了我正在尝试做的事情:
import Cocoa
import SwiftUI
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
var window: NSWindow!
func applicationDidFinishLaunching(_ aNotification: Notification) {
// Create the SwiftUI view that provides the window contents.
let contentView = ContentView()
// Create the window and set the content view.
window = NSWindow(
contentRect: NSRect(x: 0, y: 0, width: 480, height: 300),
styleMask: [.titled, .closable, .miniaturizable, .resizable, .fullSizeContentView],
backing: .buffered, defer: false)
window.center()
window.setFrameAutosaveName("Main Window")
window.contentView = NSHostingView(rootView: contentView)
window.makeKeyAndOrderFront(nil)
var loop = 0
Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { timer in
loop+=1
if (loop % 10 == 0) {
// TODO: How to close the window?
} else {
// TODO: How to reopen the window?
}
}
}
}
【问题讨论】:
-
@valosip 这似乎是一个完全不同的问题,这个问题是关于 iOS 而不是 macOS。示例:UIWindow 与 macOS 无关。
-
已删除,错过了macos部分。