我试图在单击按钮和sendMessage函数后清除文本字段。我不断遇到错误,我无法解决它。有人有什么想法吗?我试图简单地在第一个结构体中创建一个布尔变量,并在sendMessages函数后切换它的值。这会导致self不可变的错误,我无法在CustomMessageField中访问此变量,我必须在那里执行TextField。text =“”清除它
struct MessagesField: View {
var body: some View {
HStack{
CustomMessageField(placeholder: Text("Enter Your Message Here"), text: $message)
Button {
viewModel.sendMessages(withOtherUserUid: viewModeler.user.id ?? "", withText: message)
} label: {
Image(systemName: "paperplane.fill")
}
}
}
}
struct CustomMessageField: View{
var placeholder: Text
@Binding var text: String
var editingChanged: (Bool) -> () = {_ in}
var commit: () -> () = {}
var body: some View{
ZStack(alignment: .leading){
if text.isEmpty{
placeholder
.opacity(0.5)
}
TextField("", text: $text, onEditingChanged: editingChanged, onCommit: commit)
}
}
}
1条答案
按热度按时间lvmkulzt1#
我认为您的输入缺少一个@State变量。一旦您有了它,您可以在发送后轻松地将其设置为“”: