SwiftUI 中带循环的动态按钮
Dynamic Button with loop in SwiftUI
我正在使用 SwiftUI
和 Xcode-beta 4
。
我想用 ForEach
创建动态按钮。我正在使用这些代码行:
struct Result {
var id = UUID()
var score: Int
}
struct ContentView : View {
let results = [Result(score: 8), Result(score: 5), Result(score: 10)]
var body: some View {
VStack {
ForEach(results.identified(by: \.id)) { result in
Button(action: {
print(result.score)
}){
Text(result.score)
}
}
}
}
}
但是Xcode
无法编译这个。
当我在按钮样式中将Text(result.score)
更改为Text("test")
时,现在Xcode可以编译它
尝试使用文本("\(result.score)")
要打印 Int
:Text("\(result.score)")
另请注意,ForEach
语法略有变化(Beta 5)。
现在应该是:results.identified(by: \.id)
let results = [Result(score: 8), Result(score: 5), Result(score: 10)]
var body: some View {
VStack {
ForEach(results.identified(by: \.id)) { result in
Button(action: {
print(result.score)
}){
Text("\(result.score)")
}
}
}
}
由于result.score是Int,必须将其转换为String才能在Text()中显示。将您的文本按钮代码更改为此:
Text("\(result.score)")
我正在使用 SwiftUI
和 Xcode-beta 4
。
我想用 ForEach
创建动态按钮。我正在使用这些代码行:
struct Result {
var id = UUID()
var score: Int
}
struct ContentView : View {
let results = [Result(score: 8), Result(score: 5), Result(score: 10)]
var body: some View {
VStack {
ForEach(results.identified(by: \.id)) { result in
Button(action: {
print(result.score)
}){
Text(result.score)
}
}
}
}
}
但是Xcode
无法编译这个。
当我在按钮样式中将Text(result.score)
更改为Text("test")
时,现在Xcode可以编译它
尝试使用文本("\(result.score)")
要打印 Int
:Text("\(result.score)")
另请注意,ForEach
语法略有变化(Beta 5)。
现在应该是:results.identified(by: \.id)
let results = [Result(score: 8), Result(score: 5), Result(score: 10)]
var body: some View {
VStack {
ForEach(results.identified(by: \.id)) { result in
Button(action: {
print(result.score)
}){
Text("\(result.score)")
}
}
}
}
由于result.score是Int,必须将其转换为String才能在Text()中显示。将您的文本按钮代码更改为此:
Text("\(result.score)")