如何创建一个空的视图数组,然后在SwiftUI中初始化它进行渲染?

如何创建一个空的视图数组,然后在SwiftUI中初始化它进行渲染?,swiftui,Swiftui,我得到了3个编码视图,它们的名字是:circleView1,circleView2,circleView3 它基本上呈现1,2和3的圆形图像 我的目标:我想将这3个视图附加到一个空数组中以供使用。 代码有问题,不起作用 您可以使用SwiftUI的包装器AnyView删除该类型。即使在技术上是可能的,我也不推荐这种使用和消费视图的方式 我的工作示例: 导入快捷界面 struct circleView1:View{var body:some视图{Image(systemName:“1.circle”

我得到了3个编码视图,它们的名字是:circleView1,circleView2,circleView3 它基本上呈现1,2和3的圆形图像

我的目标:我想将这3个视图附加到一个空数组中以供使用。

代码有问题,不起作用


您可以使用SwiftUI的包装器
AnyView
删除该类型。即使在技术上是可能的,我也不推荐这种使用和消费视图的方式

我的工作示例:

导入快捷界面
struct circleView1:View{var body:some视图{Image(systemName:“1.circle”).font(font.largeTitle).padding()}
struct circleView2:View{var body:some视图{Image(systemName:“2.circle”).font(font.largeTitle).padding()}
struct circleView3:View{var body:some视图{Image(systemName:“3.circle”).font(font.largeTitle).padding()}
结构ContentView:View{
var shaperray:[AnyView]=[]
var body:一些观点{
VStack{

ForEach(0..A
视图
不是一个东西-它是一个协议,指定了一致性类型必须支持的-因此您不能拥有一个非东西的数组(至少在当前版本的Swift中不是)。您可以拥有一个
图像
视图或
任何视图
视图的数组,但不能是任意类型(这些都是不同的)符合视图的。为什么你认为这里需要一个数组?在这个问题中,所有的“圆”视图实际上是相同的基础类型。为什么它们被定义为不同的类型?这不是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: [View] = [EmptyView()]
    

    var body: some View {
        
        

        VStack
        {
            shapeArray()
        }
        .onAppear()
        {
            shapeArray().append(circleView1)
            shapeArray().append(circleView2)
            shapeArray().append(circleView3)
        }
        
        
    }
}