SwiftUI:如何在第一次启动时显示警报

时间:2020-09-13 14:38:56

标签: swift xcode swiftui

我是SwiftUI的新手,我想在用户首次启动应用程序时显示警报。如果用户第二次(或第三次)打开应用,则警报将不再出现。

struct ContentView: View {

    @State var alertShouldBeShown = true   
    
    var body: some View {
        VStack {
            Text("Hello World!")
            
            .alert(isPresented: $alertShouldBeShown, content: {

                Alert(title: Text("Headline"),
                      message: Text("Placeholder"),
                      dismissButton: Alert.Button.default(
                        Text("Accept"), action: {
                      }
                    )
                )
            })
        }
    }
}

1 个答案:

答案 0 :(得分:2)

使用UserDefaults存储状态值。

这是可能的解决方案。经过Xcode 11.7 / iOS 13.7的测试

struct ContentView: View {

    @State var alertShouldBeShown = !UserDefaults.standard.bool(forKey: "FirstStart")

    var body: some View {
        VStack {
            Text("Hello World!")

            .alert(isPresented: $alertShouldBeShown, content: {

                Alert(title: Text("Headline"),
                      message: Text("Placeholder"),
                      dismissButton: Alert.Button.default(
                        Text("Accept"), action: {
                            UserDefaults.standard.set(true, forKey: "FirstStart")
                      }
                    )
                )
            })
        }
    }
}