Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swiftui @state变量更改后视图未更新_Swiftui_Combine - Fatal编程技术网

Swiftui @state变量更改后视图未更新

Swiftui @state变量更改后视图未更新,swiftui,combine,Swiftui,Combine,在上面的代码片段中,当我更新@State var frontText时,我希望视图刷新并显示frontText。但由于某些原因,在我的Frontside结构中使用时,它不会显示新的frontText。如果我只是在视图中打印文本(frontText),它将始终随着变量的更改而刷新。当frontText更新时,我缺少什么使其正确刷新?谢谢 您必须将kanatext声明为@Binding: struct Flashcard : View { @State var frontText

在上面的代码片段中,当我更新@State var frontText时,我希望视图刷新并显示frontText。但由于某些原因,在我的Frontside结构中使用时,它不会显示新的frontText。如果我只是在视图中打印文本(frontText),它将始终随着变量的更改而刷新。当frontText更新时,我缺少什么使其正确刷新?谢谢

您必须将
kanatext
声明为
@Binding

    struct Flashcard : View {
      @State var frontText = newArray[randomNum].kana
      @State var backText = newArray[randomNum].romaji

      var body: some View {
        let zstack = ZStack {
          Frontside(kanatext: frontText)
            .background(Color.yellow)
            .rotation3DEffect(.degrees(self.showResults ? 180.0 : 0.0), axis: (x: 0.0, y: 1.0, z: 0.0))
            .zIndex(self.showResults ? 0 : 1)
            .frame(width: 300, alignment: .center)
            .cornerRadius(25)
         }
      }

public struct Frontside: View
{
    @State public var kanatext: String = ""

    public var body: some View
    {
        Text(self.kanatext)
            .font(.title)
            .fontWeight(.black)
            .padding(32)
    }
}
然后将绑定传递到您的状态,该状态由初始化器中的父视图拥有:

@Binding public var kanatext: String
基本上,当您在view@State中声明一个变量时,您表示这个视图拥有它,并且它的绘制方式依赖于它。如果希望此状态影响另一个视图,则需要将其作为绑定($)传入。如果两者都引用与@State相同的变量,则它们都有自己的独立副本,因为它们都是值类型

Frontside(kanatext: $frontText)