当我在摆弄 SwiftUI 时,我想知道如何让水平 ScrollView
具有 2 个交替行。
我在使用示例时收到以下消息:
The compiler is unable to type-check this expression in reasonable time; try breaking up the expression into distinct sub-expressions
import SwiftUI
struct LabelFilter: View {
var allLabels = ["one", "two", "three", "four", "five", "six", "seven"]
var body: some View {
ScrollView(.horizontal, showsIndicators: false) {
VStack {
HStack {
ForEach(allLabels.indices) { index in
if (index % 2 == 0) {
LabelButton(label: self.allLabels[index]) { }
}
}
}.padding()
HStack {
ForEach(allLabels.indices) { index in
if (index % 2 == 1) {
LabelButton(label: self.allLabels[index]) { }
}
}
}.padding()
}
}
}
}
为什么会发生这种情况,如何解决它以及是否有更好的解决方案?
最佳答案
此代码编译:
struct LabelFilter: View {
var allLabels = ["one", "two", "three", "four", "five", "six", "seven"]
var evenLabels: [String] {
stride(from: 0, to: allLabels.count, by: 2).map { allLabels[$0] }
}
var oddLabels: [String] {
stride(from: 1, to: allLabels.count, by: 2).map { allLabels[$0] }
}
var body: some View {
ScrollView(.horizontal, showsIndicators: false) {
VStack {
HStack {
ForEach(oddLabels, id: \.self) { label in
Text(label)
}
}.padding()
HStack {
ForEach(evenLabels, id: \.self) { label in
Text(label)
}
}.padding()
}
}
}
}
关于swift - 如何使用 SwiftUI 交替行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58285963/