Передача значения переменно из Одного 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 шт):

Автор решения: A I

Внутри ProfileView объявите переменную как @Binding (например, @Binding var letter: String), а внутри LogingView объявите переменную как @State (например, @State var a = "a"). Все, что вам нужно сделать, это поместить переменную "a" в subview вот так: Profileview(letter: $a). Все изменения с letter в ProfileView будут влиять на LoginView.

→ Ссылка
Автор решения: Sherstyuk

Начните использовать MVVM, ну или если быстро решить ваш вопрос, то @Appstorage

→ Ссылка
Автор решения: DavidSelio

Думаю ты это имел ввиду:

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)")
        
    }
}
}
→ Ссылка