如何从不同的结构更改@State 变量

jjx*_*123 1 xcode ios swift swiftui

我是 swift UI 和 swift 的新手,我想知道如何从不同的结构更改变量。在这种情况下,我需要在不同视图中从本节更改内容视图中登录的布尔值。基本解释将不胜感激。谢谢!

Button(action: {

    if (checkKey(testKey: self.key)) {

        //HERE

    }

}) {
    Text("Submit")
    .padding()
.background(Color.init(.sRGB, red: 0.01, green: 0.01, blue: 0.01, opacity: 0.05))
            .cornerRadius(10)
}
Run Code Online (Sandbox Code Playgroud)

这是内容视图。我需要更改@State bool

struct ContentView: View {

    @State public var loggedin: Bool = false

    var body: some View {

        NavigationView {

            if (loggedin) {

                MainView()

            } else {
                // Not Logged In
                LoginScreen()
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Ruc*_*dia 5

这是一个完整的代码,您可以@State public var loggedin: Bool使用@Binding var loggedin: Boolchnage 值将变量传递给另一个结构

struct ContentView: View {
@State public var loggedin: Bool = false
var body: some View {
    NavigationView {
        if (loggedin) {
            MainView(loggedin: $loggedin)
        } else {
            // Not Logged In
            LoginScreen(loggedin: $loggedin)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

}

struct MainView: View {
@Binding var loggedin: Bool
var body: some View {
    VStack {
        Text("")
        Button(action: {
            self.loggedin = false
        }, label: {
            Text("Chnage loggedin value")
        })
    }
}
Run Code Online (Sandbox Code Playgroud)

}

  • 你可以像这样传递 LoginScreen(loggedin: .constant(false)) (2认同)