Передача значения переменно из Одного View в другой View SwiftUI
у меня есть два View LoginView и ProfileView
В LoginView имеется ряд значений:
@State private var email: String = "Email"
@State private var password: String = "Password"
@State private var showToggleSignup: Bool = false
@State private var showToggleLogin: Bool = true
@State private var showToggleReset: Bool = false
@State private var showProfileView: Bool = false
Эти значения изменяются по нажатию на различные кнопки в самом LoginView на пример путем:
Button {
showToggleLogin.toggle()
showToggleReset.toggle()
} label: {
GradientButton(text: "forgot pass?")
.frame(maxWidth: .infinity, alignment: .leading)
.opacity(showToggleLogin ? 0 : 1)
}
Каким образом, находясь в ProfileView можно изменить эти значения для LoginView?
Очень буду признателен за помощь! Может я чего то не понимаю, но я лишь только учусь!
Ответы (3 шт):
Внутри ProfileView объявите переменную как @Binding (например, @Binding var letter: String), а внутри LogingView объявите переменную как @State (например, @State var a = "a"). Все, что вам нужно сделать, это поместить переменную "a" в subview вот так: Profileview(letter: $a). Все изменения с letter в ProfileView будут влиять на LoginView.
Начните использовать MVVM, ну или если быстро решить ваш вопрос, то @Appstorage
Думаю ты это имел ввиду:
import SwiftUI
class User: ObservableObject {
@Published var coin = 0
}
struct ContentView: View {
@ObservedObject var getvaluecoin = User()
var body: some View {
VStack {
FirstView(getvaluecoin: getvaluecoin)
Button("tap tap") {
getvaluecoin.coin += 1
}
}
}
}
struct FirstView: View {
@ObservedObject var getvaluecoin = User()
var body: some View {
VStack {
Text("View:")
Text("Coins:\(getvaluecoin.coin)")
}
}
}