斯威夫特用户界面!如何将 Bool 值从一个视图更改为另一个视图

SwiftUI ! How to change the Bool value from One View to Another View

下午好! 我有两个观点 登录视图和配置文件视图

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 show Profile View: Bool = false

这些值可以通过单击 LoginView 本身中的各种按钮来更改,例如:

Button {
     showToggleLogin.toggle()
     showToggleReset.toggle()
} label: {
     Gradient Button(text: "forgot pass?")
         .frame(maxWidth: .infinity, alignment: .leading)
         .opacity(showToggleLogin ? 0 : 1)
 }

如何在配置文件视图中更改登录视图的这些值?

非常感谢您的帮助!

我需要在视图 1 中将视图 2 中的 showProfile 从 false 更改为 true

也许我有什么不懂,但我正在学习!

如果你有很多像上面这样的变量,你也可以将它们捆绑在一个观察对象中,一个 class 符合 ObservableObject 协议。在那里你 @Publish 变量。使用 .enviroment 绕过这些对象或使用 @EnviromentObject 声明对象。那里有很多教程,比如

https://www.hackingwithswift.com/quick-start/swiftui/whats-the-difference-between-observedobject-state-and-environmentobject

如果您在一个视图中有一个@State 变量并且您希望在另一个视图中更改它,您可以将该变量定义为另一个视图中的@Binding 并将其传递。

所以在登录视图中你有:

struct LoginView: View {

    @State private var showToggleSignup: Bool = false

    var body: some View {

        ProfileView(showToggleSignp: $showTogglesignup)
    }
}

然后个人资料视图如下所示:

struct ProfileView: View {

    @Binding var showToggleSignup: Bool

    var body: some View {
        // Do whatever you need to do
    }
}

祝你好运, MacUserT