Swiftui 无法转换类型为';UIHostingController<;AnyView>';关闭结果类型';UIHostingController<;第页>';

Swiftui 无法转换类型为';UIHostingController<;AnyView>';关闭结果类型';UIHostingController<;第页>';,swiftui,Swiftui,根据教程,我正在使用SwiftUI实现页面视图 特别是有这样的代码: struct PageView<Page: View>: View { var viewControllers: [UIHostingController<Page>] @State var currentPage = 0 init(_ views: [Page]) { self.viewControllers = views.map { UIHostingController

根据教程,我正在使用SwiftUI实现页面视图

特别是有这样的代码:

struct PageView<Page: View>: View {
  var viewControllers: [UIHostingController<Page>]
  @State var currentPage = 0

  init(_ views: [Page]) {
      self.viewControllers = views.map { UIHostingController(rootView: $0) }
  }

  var body: some View {
    PageViewController(controllers: viewControllers, currentPage: $currentPage)
  }
}  
我想在页面视图周围做一些漂亮的填充,因此我可以用以下方式调用此视图:

PageView([AnyView(FirstView().padding()), AnyView(SecondView().padding()])
一切都很好,但每次调用AnyView in caller方法时,我都必须重复.padding()和包装。但是,当我尝试将此代码移动到init方法时,我陷入了错误,我无法回避:

  init(_ views: [Page]) {
      self.viewControllers = views.map { UIHostingController(rootView: AnyView($0.padding())) }
  }
报告为的无法将“UIHostingController”类型的值转换为关闭结果类型“UIHostingController”


有没有提示如何解决这个问题?

最简单的方法可能是添加填充

  var body: some View {
    PageViewController(controllers: viewControllers, currentPage: $currentPage)
        .padding()     // << here !!
  }

谢谢,@Asperi,第一个解决方案不起作用,因为我想在PageControl中的各个视图之间进行填充,因此滚动将在页面之间显示分隔符。然而,第二个是有效的。我现在真的很困惑,因为我确信我试过了,但没有成功,还有另一条编译消息,可能是XCode重启有帮助,或者别的什么。
  var body: some View {
    PageViewController(controllers: viewControllers, currentPage: $currentPage)
        .padding()     // << here !!
  }
  var viewControllers: [UIHostingController<AnyView>]    // << here !!