如何使用SwiftUI具有动态视图列表
我可以做一个静态列表
List { View1()
View2()
}
但是,如何从数组中动态生成元素列表?我尝试了以下操作,但出现错误:
let elements: [Any] = [View1.self, View2.self] List {
ForEach(0..<elements.count) { index in
if let _ = elements[index] as? View1 {
View1()
} else {
View2()
}
}
}
有什么解决办法吗?我要完成的工作是一个列表,其中包含不是静态输入的动态元素集。
回答:
看起来答案与将我的视图包装在其中有关 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())
}
}
这样,我现在可以从服务器获取视图数据并进行组合。而且,仅在需要时才实例化它们。
以上是 如何使用SwiftUI具有动态视图列表 的全部内容, 来源链接: utcz.com/qa/422093.html