gpt4 book ai didi

ios - 如何使用 SwiftUI 获得动态 View 列表

转载 作者:搜寻专家 更新时间:2023-10-30 22:31:42 24 4
gpt4 key购买 nike

我可以像这样做一个静态列表

List {
View1()
View2()
}

但是我如何从一个数组中创建一个动态的元素列表呢?我尝试了以下但出现错误:包含控制流语句的闭包不能与函数构建器“ViewBuilder”一起使用

    let elements: [Any] = [View1.self, View2.self]

List {
ForEach(0..<elements.count) { index in
if let _ = elements[index] as? View1 {
View1()
} else {
View2()
}
}
}

有什么解决办法吗?我想要完成的是一个包含动态元素集的列表,这些元素不是静态输入的。

最佳答案

看起来答案与将我的 View 包装在 AnyView

中有关
struct ContentView : View {
var myTypes: [Any] = [View1.self, View2.self]
var body: some View {
List {
ForEach(0..<myTypes.count) { index in
self.buildView(types: self.myTypes, index: index)
}
}
}

func buildView(types: [Any], index: Int) -> AnyView {
switch types[index].self {
case is View1.Type: return AnyView( View1() )
case is View2.Type: return AnyView( View2() )
default: return AnyView(EmptyView())
}
}
}

有了这个,我现在可以从服务器获取 View 数据并组合它们。此外,它们仅在需要时实例化。

关于ios - 如何使用 SwiftUI 获得动态 View 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56645647/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com