SwiftUI:为什么我不能在 PreviewProvider 的预览中映射视图?
SwiftUI: why can't I map views in a previews in PreviewProvider?
我知道这样做可以显示多个预览:
struct TestView: View {
let number: Int
var body: some View {
ZStack {
Color.orange
Text("\(number)")
.fontWeight(.heavy)
.font(.system(size: 56.0))
}
.frame(width: 100, height: 100, alignment: .center)
}
}
struct TestView_Previews: PreviewProvider {
static var previews: some View {
TestView(number: 3)
TestView(number: 5)
}
}
但为什么我不能改写这个呢?
static var previews: some View {
[3, 5].map { TestView(number: [=11=]) }
}
(我收到此错误:Return 类型的静态 属性 'previews' 要求“[TestView]”符合 'View')
感谢您的帮助
[TestView]
,又称为Array<TestView>
,不符合View
.
SwiftUI 的解决方案是 ForEach
视图:
static var previews: some View {
ForEach([3, 5], id: \.self) {
TestView(number: [=10=])
}
}
请注意,这假定数组中的每个元素都是唯一的(在本例中也是如此)。
因为它的 return 类型是 TestView 的数组,而数组不符合视图。
你可以这样做:
static var previews: some View {
Group {
let numbers = [3, 5]
ForEach(numbers, id: \.self) { number in
TestView(number: number)
}
}
}
我知道这样做可以显示多个预览:
struct TestView: View {
let number: Int
var body: some View {
ZStack {
Color.orange
Text("\(number)")
.fontWeight(.heavy)
.font(.system(size: 56.0))
}
.frame(width: 100, height: 100, alignment: .center)
}
}
struct TestView_Previews: PreviewProvider {
static var previews: some View {
TestView(number: 3)
TestView(number: 5)
}
}
但为什么我不能改写这个呢?
static var previews: some View {
[3, 5].map { TestView(number: [=11=]) }
}
(我收到此错误:Return 类型的静态 属性 'previews' 要求“[TestView]”符合 'View')
感谢您的帮助
[TestView]
,又称为Array<TestView>
,不符合View
.
SwiftUI 的解决方案是 ForEach
视图:
static var previews: some View {
ForEach([3, 5], id: \.self) {
TestView(number: [=10=])
}
}
请注意,这假定数组中的每个元素都是唯一的(在本例中也是如此)。
因为它的 return 类型是 TestView 的数组,而数组不符合视图。
你可以这样做:
static var previews: some View {
Group {
let numbers = [3, 5]
ForEach(numbers, id: \.self) { number in
TestView(number: number)
}
}
}