swiftui - 如何制作一个空视图数组,然后初始化它以在 SwiftUI 中渲染?
问题描述
我得到了 3 个编码视图,其名称为:circleView1、circleView2、circleView3,它们基本上呈现 1,2 和 3 的圆形图像。
我的目标:我想将这 3 个视图附加到一个空数组以供使用。
代码有问题,不工作!
import SwiftUI
struct circleView1: View { var body: some View { Image(systemName: "1.circle").font(Font.largeTitle).padding() } }
struct circleView2: View { var body: some View { Image(systemName: "2.circle").font(Font.largeTitle).padding() } }
struct circleView3: View { var body: some View { Image(systemName: "3.circle").font(Font.largeTitle).padding() } }
struct ContentView: View {
var shapeArray: [View] = [EmptyView()]
var body: some View {
VStack
{
shapeArray()
}
.onAppear()
{
shapeArray().append(circleView1)
shapeArray().append(circleView2)
shapeArray().append(circleView3)
}
}
}
解决方案
您可以使用 SwiftUI 的包装器AnyView
来擦除类型。即使在技术上是可行的,我也不会真正推荐这种使用和消费视图。
我的工作示例:
import SwiftUI
struct circleView1: View { var body: some View { Image(systemName: "1.circle").font(Font.largeTitle).padding() } }
struct circleView2: View { var body: some View { Image(systemName: "2.circle").font(Font.largeTitle).padding() } }
struct circleView3: View { var body: some View { Image(systemName: "3.circle").font(Font.largeTitle).padding() } }
struct ContentView: View {
var shapeArray: [AnyView] = []
var body: some View {
VStack {
ForEach(0..<self.shapeArray.count) { i in
self.shapeArray[i]
}
}
}
init() {
self.shapeArray.append(AnyView(circleView1()))
self.shapeArray.append(AnyView(circleView2()))
self.shapeArray.append(AnyView(circleView3()))
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
推荐阅读
- applescript - 如何使用苹果脚本点击chrome的添加扩展按钮
- julia - 如何在Julia中创建一定长度的缺失值向量?
- python - 尝试以 django 嵌套内联表单集的嵌套形式设置用户字段 - 失败
- python - 当我在骰子号码生成器上翻转 21 时,如何让 python 打印“你输了”?
- python - 'FastText' 对象没有属性 'vocab'
- algorithm - 斐波那契堆上的操作
- python - 使用 nba_api.stats.endpoints 库的 Leaguegamefinder 时引发连接超时错误
- react-native - 文本背景的反应本机动画
- laravel - Laravel 在站点和应用程序中获取数据实时和共享
- xml - Plesk API 调用电子邮件别名并在圆形立方体中显示