【发布时间】:2020-06-09 20:45:22
【问题描述】:
我正在根据Interacing with UIKit 教程使用 SwiftUI 实现 PageView。
而且,特别是有这样的代码:
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([FirstView(), SecondView()])
我想在页面视图周围做漂亮的填充,所以我可以通过以下方式调用这个视图:
PageView([AnyView(FirstView().padding()), AnyView(SecondView().padding()])
一切都很好,但我每次都必须重复 .padding() 并在调用方方法中包装 AnyView。但是,当我尝试将此代码移动到 init 方法时,我被困在错误中,无法绕过:
init(_ views: [Page]) {
self.viewControllers = views.map { UIHostingController(rootView: AnyView($0.padding())) }
}
报告为无法将'UIHostingController
任何提示如何解决它?
【问题讨论】:
标签: swiftui