Ios SwiftUI上的previewProvider未加载
今天,我想知道是否可以使用Ios SwiftUI上的previewProvider未加载,ios,swift,swiftui,Ios,Swift,Swiftui,今天,我想知道是否可以使用PreviewProvider在SwiftUI上设计一个视图。当您有模型时,这很困难,因为您需要“初始化”每个模型和属性才能看到UI模拟器。前 struct SimpleView: View { @State private var number : Int var body: some View { ScrollView{ VStack{ T
PreviewProvider
在SwiftUI上设计一个视图。当您有模型时,这很困难,因为您需要“初始化”每个模型和属性才能看到UI模拟器。前
struct SimpleView: View {
@State private var number : Int
var body: some View {
ScrollView{
VStack{
Text(String(number))
}
}
}
}
struct SimpleView_Previews: PreviewProvider {
static var previews: some View {
SimpleView(Int: 5)
}
}
UI预览效果很好强>
但是如果我需要使用具有40-70个属性的自定义对象,该怎么办(
有没有一种在开始时没有“硬代码”的工作方式
非常感谢您一种方法是创建一个
mockViewModel
类属性,该属性返回一个具有固定值的实例,您可以将其用于预览
在本例中,支持模型对象是一个核心数据管理对象
在正常使用中,可以调用ProjectDetailViewModel(项目:)
initialiser
对于预览,可以使用mockViewModel
属性
class ProjectDetailViewModel: ObservableObject {
@Published var name: String {
didSet {
self.project.name = name
}
}
@Published var notes: String {
didSet {
self.project.notes = notes
}
}
let project: Project!
init(project: Project) {
self.project = project
name = project.name ?? ""
notes = project.notes ?? ""
}
private init() {
project = nil
name = "Mock project"
threePhase = false
notes = "Mock Notes"
}
static var mockViewModel:ProjectDetailViewModel {
return ProjectDetailViewModel()
}
}
struct ProjectDetailView_Previews: PreviewProvider {
static var previews: some View {
ProjectDetailView(project: ProjectDetailViewModel.mockViewModel)
}
}
我通常会创建相关
ViewModel
的MockViewModel
子类,或者如果视图模型是一个结构,我会在te struct上创建一个静态函数,返回一个适当的“mock”结构的实例。具有40-70个属性-永远不要这样做-在小部分上分离,越小越好。我将尝试分离这些模型,因为加载整个模型很烦人(不幸的是,有这么多的模型可以一起工作!我的意思是,一个地址表有20个属性,比如邮政编码、电子邮件、姓名、电话……真是一团糟)@Paulw11你能给我举个例子吗?