gpt4 book ai didi

swiftui - @state 变量更改后 View 不更新

转载 作者:行者123 更新时间:2023-12-03 23:50:56 31 4
gpt4 key购买 nike

    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)
}
}

在上面的代码片段中,当我更新@State var frontText 时,我希望我的 View 能够刷新并显示frontText。但是由于某种原因,它在我的 Frontside 结构中使用时不会显示新的 frontText。如果我只是在我的 View 中打印 Text(frontText) ,它总是会随着变量的变化而刷新。每当 frontText 更新时,我错过了什么才能正确刷新?谢谢。

最佳答案

您必须声明 kanatext@Binding :

@Binding public var kanatext: String

然后将绑定(bind)传递给您的状态,该状态由初始化程序中的父 View 拥有:
Frontside(kanatext: $frontText)

基本上,当您在 View @State 中声明变量时 - 您表明该 View 拥有它并且绘制它的方式取决于它。当您希望此状态影响另一个 View 时,您需要将其作为绑定(bind)($)传递。 IF 都引用相同的变量,因为 @State 每个都有自己的独立副本,因为它们都是值类型。

关于swiftui - @state 变量更改后 View 不更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58012913/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com