SwiftUI中提交后如何正确清空TextField?
解决TextField提交后清空但保留记录文本的问题
你当前代码的问题很明显——同一个@State变量loggedText既绑定了TextField输入,又用来存要显示的记录,提交后清空它,自然连已经显示的记录也一起删了。
直接拆分两个状态变量就能解决:一个管输入框的临时内容,一个管保存已提交的记录。修改后的代码如下:
@State private var inputText: String = "" @State private var savedText: String = "" @State private var showLoggedText = false var body: some View { VStack { if showLoggedText { Text(savedText) } HStack { TextField( "Add new set", text: $inputText ) .onSubmit { savedText = inputText showLoggedText = true inputText = "" } } } }
关键改动说明:
- 新增
inputText专门绑定TextField,负责临时存储用户输入的内容 savedText用来保存提交后的记录,不会被清空- 提交时把输入框的内容转存到
savedText,再清空inputText,这样显示的记录完全不受影响
内容的提问来源于stack exchange,提问作者acerblaze
相关产品推荐
相关产品推荐

