I'm trying to simply call a function in my AppDelegate when the user closes the app's preferences, which is the ContentView
below.
A breakpoint in onDisappear
never hits for some reason. I'd love some help understanding why that is.
struct ContentView: View {
@EnvironmentObject var state: AppState
var body: some View {
Text("Hi there")
.onDisappear {
// Never gets in here, breakpoint never hits
let appDelegate = NSApplication.shared.delegate as! AppDelegate
appDelegate.hideIcon()
}
}
In my AppDelegate:
func hideIcon() {
NSApp.setActivationPolicy(.accessory)
}
How content view is initiated:
@objc func preferences() {
let contentView = ContentView().environmentObject(state)
// Create the window and set the content view.
window = NSWindow(
contentRect: NSRect(x: 0, y: 0, width: 480, height: 300),
styleMask: [.titled, .closable],
backing: .buffered, defer: false)
window.isReleasedWhenClosed = false
window.center()
window.setFrameAutosaveName("Arch OS System Preferences")
window.contentView = NSHostingView(rootView: contentView)
window.makeKeyAndOrderFront(nil)
NSApp.setActivationPolicy(.regular)
NSRunningApplication.current.activate(options: [.activateIgnoringOtherApps, .activateAllWindows])
}
Thanks!
question from:
https://stackoverflow.com/questions/65617708/macos-swiftui-ondisappear-not-called-when-window-is-closed 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…