Как изменить переменную @State из другой структуры - PullRequest
0 голосов
/ 17 января 2020

Я новичок в быстром пользовательском интерфейсе и быстром в целом, и мне было интересно, как изменить переменную из другой структуры. В этом случае мне нужно изменить логин, зарегистрированный в представлении содержимого, из этого раздела в другое представление. Баси c объяснения будут оценены. Спасибо!

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

Ответы [ 2 ]

0 голосов
/ 17 января 2020

вот полный код, который вы можете передать вашей переменной @State public var loggedin: Bool в другую структуру, используя @Binding var loggedin: Bool и значение chnage

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

}

0 голосов
/ 17 января 2020
@Binding var loggedin: Bool

в вашем экране входа в систему. Если вы используете здесь только логин, это нормально, если вы используете его в приложении, возможно, вы захотите заглянуть в @ EnvironmentObject.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...