swift - 如何在 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=""
}
有人知道该怎么做吗?
解决方案
您应该使用的正确方法是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)
}
}
}
}
推荐阅读
- typescript - 是否可以在不创建新的 observable 的情况下合并到现有的 observable?
- r - 总结 R 中的 char 列
- c - Kotlin/Native 垃圾收集器如何在 C 中工作?
- c# - 由于页面刷新,AJAX 没有得到响应
- semantic-ui-react - 带有搜索道具的语义反应下拉列表可防止样式
- scrollbar - 如何使用 Angular 2 在 ng2-smart-table 中为表体应用滚动
- amazon-web-services - 如果僵尸网络使用 http 请求耗尽我的 Amazon AWS 服务器会怎样?
- swift - 转换数据?在 swift 5 中包含字节到 Int
- c - getopt_long() 的 longindex 始终为 0
- python - 如何从列表列表中创建 Pandas DataFrame?