我有一个顶层MacOS SwiftUI内容视图,在该视图中,我通常将[Frame]数组的@State初始化为一个空数组[]。但是,当我预览它时,我想在其中添加一个示例框架。
这是最少的代码:(Frame是我自己的结构,Frame.sampleFrame是供预览使用的静态框架)。
struct ContentView: View {
@State var frames: [Frame] = []
var body: some View {
VStack {
FrameSummaryView(frames: self.$frames)
Text("Placeholder")
}.frame(maxWidth: .infinity, maxHeight: .infinity)
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
,如果我预览的话,这就是如何在FrameSummaryView中创建恒定的1元素数组[Frame.sampleFrame]:
struct FrameSummaryView_Previews: PreviewProvider {
static var previews: some View {
FrameSummaryView(frames: .constant([Frame.sampleFrame]))
}
}
在预览模式下,如何使顶级ContentView使用.constant([Frame.sampleFrame])[Frame]数组?
答案 0 :(得分:1)
这是可行的方法
struct ContentView: View {
@State var frames: [Frame]
init(_ frames: [Frame] = []) {
_frames = State<[Frame]>(initialValue: frames)
}
var body: some View {
VStack {
FrameSummaryView(frames: self.$frames)
Text("Placeholder")
}.frame(maxWidth: .infinity, maxHeight: .infinity)
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView([Frame.sampleFrame])
}
}