xcode SwiftUI检测首选项/设置窗口何时关闭

fgw7neuy  于 2022-12-24  发布在  Swift
关注(0)|答案(1)|浏览(126)

我有这样的首选项视图设置:

import SwiftUI

@main
struct MyApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
        
        
        #if os(macOS)
        Settings {
            CustomSettingsView()
                .onAppear() {
                    print("this gets called")
                }
                .onDisappear() {
                    print("this is never called")
                }

        }
        #endif
    }
}

我想在首选项窗口关闭时执行一些操作。有什么方法可以检测到吗?

i2byvkas

i2byvkas1#

CustomSettingsView中添加一个完成变量,如下所示:

struct CustomSettingsView: View {
    var Dismiss:(() -> Void)?

    ...

}

然后在MyApp视图中:

CustomSettingsView() {
    print("this now also gets called")
}
    .onAppear() {
        print("this gets called")
    }

最后,在CustomSettingsView中,调用第一个内部组件(例如ListNavigationView)的.onDisappear方法中的completion变量,因此最终的CustomSettingsView结构体将如下所示:

struct CustomSettingsView: View {
    ...

    NavigationView {

        ...

    }
    .onDisappear {
        Dismiss?()
    }

}

相关问题