【问题标题】:SwiftUI detecting when Preferences/Settings window closesSwiftUI 检测首选项/设置窗口何时关闭
【发布时间】:2022-12-24 02:30:26
【问题描述】:

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

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
    }
}

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

【问题讨论】:

  • 您的Settings 视图永远不会从您的应用程序中删除。所以onDisapear永远不会被调用。

标签: ios swift xcode macos swiftui


【解决方案1】:

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

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

    ...

}

然后在你的MyApp视图中:

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

最后在你的CustomSettingsView中,调用第一个内部组件的.onDisappear方法中的完成变量,例如。 ListNavigationView,所以你的最终 CustomSettingsView 结构看起来像这样:

struct CustomSettingsView: View {
    ...

    NavigationView {

        ...

    }
    .onDisappear {
        Dismiss?()
    }


}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-04
    相关资源
    最近更新 更多