如何切换数组中对象的属性并更新SwiftUI视图?

问题描述 投票:0回答:1

SwiftUI问题。我有这段代码,给我错误:“编译器无法在合理的时间内对这种表达式进行类型检查;尝试将表达式分解为不同的子表达式”。该错误是由于feel.selected.toggle()引起的。 myFeelings是一个ObservableObject类,其中包含作为结构的Feeling数组。我希望能够在按下按钮并更新视图时将selected属性更改为true或false。我不知道是否有人可以帮助我,我通常对编码还是陌生的。

ForEach(myFeelings.feelings) { feeling in
                        ZStack {
                            Button(action: {
                                feeling.selected.toggle()
                            }) {
                            Text(feeling.emoji!)
                            .font(.system(size: 40))
                            }

                        }
                    }
arrays swift xcode view swiftui
1个回答
0
投票

foreach中的用户indices,并使用@State声明myFeelings,这是一个完整的工作示例:

struct FeelingGroup {
    var feelings: [Feeling]
}

struct Feeling {
    var selected: Bool
    var emoji: String
}
struct ToggleView: View {
    @State var myFeelings = FeelingGroup(feelings: [Feeling(selected: true, emoji: "A"),
                                                    Feeling(selected: true, emoji: "B"),
                                                    Feeling(selected: false, emoji: "C")])
    var body: some View {
        VStack{
            ForEach(myFeelings.feelings.indices) { index in
                HStack {
                    Button(action: {
                        self.myFeelings.feelings[index].selected.toggle()
                        print("A")
                    }) {
                        Text(self.myFeelings.feelings[index].emoji)
                            .font(.system(size: 40))
                    }
                    Text(String(self.myFeelings.feelings[index].selected))
                    .font(.system(size: 40))
                }
            }
        }
    }
}

struct ToggleView_Previews: PreviewProvider {
    static var previews: some View {
        ToggleView()
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.