Swiftui 文本中的快捷键值不为’;不变

Swiftui 文本中的快捷键值不为’;不变,swiftui,Swiftui,我不明白为什么文本值没有改变。如果删除文本字段,文本值将发生更改:/combine或SwiftUI是否缺少某些内容 struct ContentView2:视图{ @国家私有变量numTouches:Int=0 @国家私有变量num:String=“” var body:一些观点{ VStack{ 按钮(“请触摸我”){ self.numTouches+=1 } 文本(“\(numTouches)”) TextField(“Hello输入一个数字”,text:$num) }.onReceive(

我不明白为什么文本值没有改变。如果删除文本字段,文本值将发生更改:/combine或SwiftUI是否缺少某些内容

struct ContentView2:视图{
@国家私有变量numTouches:Int=0
@国家私有变量num:String=“”
var body:一些观点{
VStack{
按钮(“请触摸我”){
self.numTouches+=1
}
文本(“\(numTouches)”)
TextField(“Hello输入一个数字”,text:$num)
}.onReceive(Just(num)){newValue in
如果newValue==“”{
self.numTouches=0
}否则{
self.numtouchs=Int.init(newValue)!
} 
}
}
}

发生的情况是,当触摸按钮时,它会增加
numTouches
,从而导致视图主体重新渲染
.onReceive
订阅
Just
发布者,该发布者立即发布值
num
,该值在开始时为空
,并将
numtouchs
设置回
0

听起来您实际上只有一个变量,它是从两个地方更新的:

  • 通过
    TextField
  • 通过
    按钮
    的操作
因此,将其保持为单个
@State var numTouches:Int

struct ContentView2: View{
    @State private var numTouches: Int = 0
    
    var body: some View {
        VStack{
            Button("Touch me pls"){
                self.numTouches += 1 
            }
            Text("\(numTouches)")
            TextField("Hello enter a number", 
                      text: $numTouches, formatter: NumberFormatter()))
              // .keyboardType(.numberPad) // uncomment for number pad keyboard
        }
    }
}

发生的情况是,当触摸按钮时,它会增加
numTouches
,这会导致视图的主体重新渲染
.onReceive
订阅
Just
发布者,该发布者立即发布值
num
,该值在开始时为空
,并将
numtouchs
设置回
0

听起来您实际上只有一个变量,它是从两个地方更新的:

  • 通过
    TextField
  • 通过
    按钮
    的操作
因此,将其保持为单个
@State var numTouches:Int

struct ContentView2: View{
    @State private var numTouches: Int = 0
    
    var body: some View {
        VStack{
            Button("Touch me pls"){
                self.numTouches += 1 
            }
            Text("\(numTouches)")
            TextField("Hello enter a number", 
                      text: $numTouches, formatter: NumberFormatter()))
              // .keyboardType(.numberPad) // uncomment for number pad keyboard
        }
    }
}

numtouchs
更新,然后立即恢复到由于
onReceive(Just(num))
而导致的
num
。你到底想实现什么?我想要两件事,首先我想写一个数字,然后触摸按钮,写的数字会增加,另一种情况是如果我不写任何数字,当我按下按钮时,文本字段会从0增加到按下按钮的次数
numtouchs
更新,然后立即返回到由于onReceive(Just(num))引起的
num
。你到底想实现什么?我想要两件事,首先我想写一个数字,然后触摸按钮,写的数字会增加,另一种情况是如果我不写任何数字,当我按下按钮时,文本字段会从0增加到按下的次数