繁体   English   中英

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

[英]How to change a @State variable from a different struct

我是 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)
}

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

struct ContentView: View {

    @State public var loggedin: Bool = false

    var body: some View {

        NavigationView {

            if (loggedin) {

                MainView()

            } else {
                // Not Logged In
                LoginScreen()
            }
        }
    }
}

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

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

}

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

}

@Binding var loggedin: Bool

在您的登录屏幕视图中。 如果您只在此处使用登录名就好了,如果您在整个应用程序中使用它,您可能需要查看@EnvironmentObject。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM