首页 > 解决方案 > 如何在 swiftUI 中更改 @State public var 值?

问题描述


在 SwiftUI 中,我有

@State public var utilisateur = ""
@State var connected = false


在这里,我有一个 TextField 来设置utilisateur.

TextField("nom.prenom", text: $utilisateur)


然后,如果utilisateur不是"",我这样做了:

if self.connected{

                       Text("Connecté en tant que \(utilisateur)")
                   .padding()
                   .background(Color(red:0.3,green:0.8,blue:0.3))
                       .foregroundColor(.white)
                }

if (!(self.utilisateur=="")){

                    Button(action: {self.connected.toggle()}) {
                        self.connected ? Text("Se déconnecter") : Text("Se connecter")
                    //                        .fontWeight(.bold)
                                    }
                                    .padding()
                    .background(self.connected ? Color(.red) : Color(red:0.0,green:0.4,blue:0.7))
                                    .foregroundColor(.white)

                }



我想要的是utilisateur在用户单击时删除值Se déconnecter

我尝试了很多可能性,但没有一种可行......

if !(self.connected){
                    $utilisateur=""
                }
if !(self.connected){
                    utilisateur=""
                }
if !(self.connected){
                    self.utilisateur=""
                }
if !(self.connected){
                    self.$utilisateur=""
                }

有人知道该怎么做吗?

标签: swiftbuttonuibuttonswiftui

解决方案


您应该使用的正确方法是self.utilisateur = ""将此行添加到您Button的操作块中。这是您执行此操作所需的工作代码:

struct CV: View {
    @State private var utilisateur = ""
    @State private var connected   = false
    @State private var buttonTitle = "connect"
    var body: some View {
        VStack {
            TextField("Connect to??", text: $utilisateur)
            if connected {
                Text("Connected to \(utilisateur)")
                    .padding()
                    .background(Color(red:0.3,green:0.8,blue:0.3))
                    .foregroundColor(.white)
            }
            if !utilisateur.isEmpty {
                Button(action: {
                    if self.buttonTitle == "connect" {
                        self.buttonTitle = "disconnect"
                    } else {
                        self.utilisateur = ""
                    }
                    self.connected.toggle()
                }) {
                    Text(buttonTitle)
                        .fontWeight(.bold)
                }
                .padding()
                .background(connected ? Color(.red) : Color(red:0.0,green:0.4,blue:0.7))
                .foregroundColor(.white)
            }
        }
    }
}

推荐阅读