首页 > 解决方案 > 在 SwiftUI 中修改变量

问题描述

假设我有这个代码:

var n = 3
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

struct ContentView: View {
    var body: some View {
        Text(String(arr[n])
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

我想设置arr[n]为 100。我将在哪里以及如何执行此操作?我不能把它放在数组声明之后,因为它是顶级的,我不能把它放在 ContentView 结构中。

我是 Swift 的新手,所以如果我能得到解释,那将非常有帮助。

编辑:另外,如果我有这个代码:

var n = 3


struct ContentView: View {
    @State var arr[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    var body: some View {
        Text(String(self.arr[n])
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

我可以放在self.arr[n] = 0哪里?

标签: swiftswiftui

解决方案


SwiftUI 是一个声明式接口。为了运行代码,您需要捕获一些事件,例如.onAppearor .onTapGesture

var n = 3

struct ContentView: View {
    @State private var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    var body: some View {
        Text(String(arr[n])).onTapGesture {
            self.arr[n] = 100
        }
    }
}

当 this 首次显示时,arr[3]is4和 that 的值显示在屏幕中间。

4被点击时,随后的闭包.onTapGesture运行并且arr[3]值被更新为100,并且因为arr是一个@State变量,视图将使用新值重绘自己。

如果在您的第​​一个示例arr中声明了ContentViewlike 之外,那么更新它不会导致ContentView重绘。


推荐阅读