【发布时间】:2020-11-23 21:19:27
【问题描述】:
我创建了一个 Swift 包,它从传递给它的内容数组创建多个 PageTabView:
import SwiftUI
public struct WhatsNewView<Content: View>: View {
let content: [Content]
public init(content: [Content]){
self.content = content
}
public var body: some View {
TabView {
ForEach(0..<content.count, id: \.self) { pageNum in
WhatsNewPage(content: content[pageNum], pageNum: pageNum + 1, totalPages: content.count)
}
}
.background(Color.white)
.ignoresSafeArea()
.tabViewStyle(PageTabViewStyle())
.indexViewStyle(PageIndexViewStyle(backgroundDisplayMode: .always))
}
}
当我调用它时,我想传入任何类型的简单或复杂视图来填充每个页面。现在,我可以像这样传入一组简单的文本视图:
import SwiftUI
import WhatsNew
@main
struct mFood_Vendor: App {
@State var showWhatsNew = false
let whatsNew = WhatsNew()
var page1 = Text("Hello World")
var page2 = Text("Goodbye World")
var body: some Scene {
WindowGroup {
ContentView()
.fullScreenCover(isPresented: $showWhatsNew, content: {
let content = [page1, page2]
WhatsNewView(content: content)
})
.onAppear(perform: {
whatsNew.checkForUpdate(showWhatsNew: $showWhatsNew)
})
}
}
}
我希望 page1 和 page2 成为人们希望在 What's New 页面上看到的任何内容。但是,如果我将这些变量更改为任何不同的内容,例如文本和图像,我会收到“无法生成表达式诊断”错误。
理想情况下,我希望能够传递以下内容:
struct page1: View {
var body: some View {
VStack {
Text("something")
Image("plus")
}
}
}
任何帮助将不胜感激。谢谢!
【问题讨论】:
标签: swiftui