【发布时间】:2019-06-22 00:37:14
【问题描述】:
我想获取一个可变长度的数组并返回一个具有 3 列和可变行长度的视图网格。视图应根据数组值更新其内容。
以下代码将为每张卡片显示一个 CardPicView,在滚动视图中显示标题为“A”...“I”。
struct ContentView : View {
let cards = ["A", "B", "C", "D", "E", "F", "G", "H", "I"]
var body: some View {
ScrollView {
ForEach(cards.identified(by: \.self)) { card in
CardPicView(cardTitle: card)
}
}
}
}
我想把这个滚动视图分成 3 列,基本上。
我发现下面的代码可以使用以下代码创建一个大小合适的网格:
struct ContentView : View {
let cards = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L"]
var body: some View {
ScrollView{
ForEach(0..<cards.count/3) { row in // create number of rows
HStack {
ForEach(0..<3) { column in // create 3 columns
Text(self.cards[row])
}
}
}
}
}
}
但是,这给了我一个只有 (AAA/BBB/CCC/DDD) 的 3x4 网格
将其更改为:
struct ContentView : View {
let cards = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L"]
var body: some View {
ScrollView{
ForEach(0..<cards.count/3) { row in // create number of rows
HStack {
ForEach(0..<3) { column in // create 3 columns
Text(self.cards[column])
}
}
}
}
}
}
给我一个只有 (ABC/ABC/ABC/ABC) 的 3x4 网格。
我不知何故需要使用两个索引来迭代行和列,但不知道如何快速做到这一点。
【问题讨论】: