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

Pea*_*her 5 uiview uipageviewcontroller swift swiftui

我通过线程在 SwiftUI 中成功实现了 PageView:
如何在 SwiftUI 中实现 PageView?

只要所有视图都具有相同的结构,通过数组传递多个视图就像一个魅力。
PageView([TestView(), TestView()]).
但是,我想传递不同的观点。
PageView([TestView(), AnotherView(), DifferentView()]).

所有视图都是 SwiftUI 类型:
struct NAME : View { code }

当我尝试向数组添加不同的结构时,我收到以下错误消息:

var pageViewViewArray = [TestView(), AnotherView(), DifferentView()]
Run Code Online (Sandbox Code Playgroud)

异构集合字面量只能推断为“[Any]”;如果这是有意的,请添加显式类型注释。
插入'为[任何]

通过将其转换为:

var pageViewViewArray = [TestView(), AnotherView(), DifferentView()] as! [Any]
PageView(pageViewViewArray)
Run Code Online (Sandbox Code Playgroud)

PageView 会说:

协议类型“Any”不能符合“View”,因为只有具体类型才能符合协议

我将不胜感激任何想法。

RPa*_*l99 8

尝试通过将每个视图强制转换为来使用类型擦除AnyView

var pageViewViewArray: [AnyView] = [AnyView(TestView()), AnyView(AnotherView()), AnyView(DifferentView())]
Run Code Online (Sandbox Code Playgroud)

文档在这里,并使用它的一个例子在这里