【发布时间】:2020-10-08 12:11:50
【问题描述】:
我收到以下代码的错误Failed to produce diagnostic for expression; please file a bug report。在我看来这很简单,但可能与泛型有关。如何将通用视图传递给结构?
在 SwiftUI 视图中,我有这个:
import SwiftUI
struct PageView<Page: View>: View {
var views: [UIHostingController<Page>]
init(_ views: [Page]) {
self.views = views.map { UIHostingController(rootView: $0) }
}
var body: some View {
Text("Page View")
}
}
struct View1: View {
var body: some View {
Text("View 1")
}
}
struct View2: View {
var body: some View {
Text("View 2")
}
}
struct Reference: View {
var body: some View { // <- Error here
PageView([View1(), View2()])
}
}
【问题讨论】:
-
这是因为您的
PageView需要一个泛型类型Page的视图数组。但是,在您的代码中,您传递了两种 不同的 类型:View1 和 View2。 -
顺便说一句,这可能会帮助你:How can I implement PageView in SwiftUI?
-
@pawello2222 是的,但是我怎么知道“接受一个对象数组,每个对象都实现视图”?
-
您可以像下面的解决方案一样使用
AnyView。