首页 > 解决方案 > SwiftUI 里面的数学运算(部分视图)

问题描述

我想问你一个关于在视图中使用数学运算的问题。

struct MyMenu: View {
    var cnt: Int = 0
    let colors: [Color] = [.red, .green, .blue]

    var body: some View {
        ForEach(colors, id: \.self) { color in
            Text(color.description)
                .padding()
                .background(color)

            cnt += 1
        }
    }
}

它给了我一个错误:

类型 '()' 不能符合 'View';只有结构/枚举/类类型可以符合协议

我不明白 SWIFTUI 语法有什么问题?为什么不能在某些 View中使用简单的数学运算。

有什么解决办法吗?谢谢!

标签: swiftswiftui

解决方案


你的体内不能有“常规”代码,因为 SwiftUI 期望你有声明性代码来在那里生成 UI。

如果您想增加您的 cnt 属性,您需要在按钮操作中执行此操作,例如,如下所示:

Button(action: {
    cnt += 1
}) {
    Text("Click me to perform any action")
}

不要忘记您的 MyMenu 对象是一个结构,这意味着默认情况下它是不可变的。如果您的 cnt 属性未使用 @State 包装器或任何其他包装器包装,则您将无法更新它,具体取决于您的需要:)

希望这可以帮助!:)


推荐阅读