SwiftUI-PageView-在不同的视图中传递

问题描述 投票:0回答:1

我通过线程在SwiftUI中成功实现了PageView:How to implement PageView in SwiftUI?

通过数组传递多个视图的过程就像一个超级按钮,只要所有视图都具有相同的结构。PageView([TestView(), TestView()])。但是,我想表达不同的看法。PageView([TestView(), AnotherView(), DifferentView()])

所有视图均为SwiftUI类型:struct NAME : View { code }

[当我尝试向数组添加其他结构时,出现以下错误消息:

var pageViewViewArray = [TestView(), AnotherView(), DifferentView()]

异构集合文字只能推断为'[Any]';如果有意,请添加显式类型注释。插入为[Any]

通过强制转换为:

var pageViewViewArray = [TestView(), AnotherView(), DifferentView()] as! [Any]
PageView(pageViewViewArray)

PageView会说:

协议类型'Any'不能符合'View',因为只有具体类型可以符合协议

我将不胜感激任何想法。

swift uiview swiftui uipageviewcontroller
1个回答
0
投票

通过将每个视图投射到AnyView,尝试使用类型擦除:

var pageViewViewArray: [AnyView] = [AnyView(TestView()), AnyView(AnotherView()), AnyView(DifferentView())]

文档here,以及使用它的示例here

© www.soinside.com 2019 - 2024. All rights reserved.