swift - 如何解决无法在此文件中预览的问题?
问题描述
我目前正在使用 SwiftUI 开发应用程序。
我可以成功构建这些代码,并且这些代码在模拟器中运行良好。
但是当我在画布上看到代码的预览时,预览不起作用,并且下面出现错误消息:
Cannot preview in this file - My.app may have crashed
在这种情况下,如何解决此错误并在画布上查看预览?
以下是代码:
我看不到 FirstView.swift 和 SecondView.swift 的预览
内容视图.swift
import SwiftUI
struct ContentView: View {
@ObservedObject var viewModel = ViewModel()
var body: some View {
TabView {
FirstView()
.tabItem {
Text("First")
}.tag(1)
SecondView()
.tabItem {
Text("Second")
}.tag(2)
}
.environmentObject(viewModel)
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
FirstView.swift
import SwiftUI
struct FirstView: View {
@EnvironmentObject var firstCheck: ViewModel
var body: some View {
VStack{
if firstCheck.check == true{
Text("checked")
}
}
}
}
struct FirstView_Previews: PreviewProvider {
static var previews: some View {
FirstView()
}
}
SecondView.swift
import SwiftUI
struct SecondView: View {
@EnvironmentObject var secondCheck: ViewModel
var body: some View {
VStack{
Toggle(
isOn: $secondCheck.check
){
Text("change")
}
if self.secondCheck.check == true{
Text("checked")
}
}
}
}
struct SecondView_Previews: PreviewProvider {
static var previews: some View {
SecondView()
}
}
ViewModel.swift
import Foundation
final class ViewModel: ObservableObject {
@Published var check: Bool = false
}
Xcode:版本 11.7
斯威夫特:斯威夫特 5
解决方案
您的视图需要@EnvironmentObject
预览:
struct FirstView_Previews: PreviewProvider {
static var previews: some View {
FirstView()
.environmentObject(ViewModel())
}
}
struct SecondView_Previews: PreviewProvider {
static var previews: some View {
SecondView()
.environmentObject(ViewModel())
}
}
推荐阅读
- php - PHP 对象和 foreach 循环出现问题,对象未正确存储值
- ruby-on-rails - 用户控制器#create中nil:NilClass的未定义方法'key'
- curl - curl:(6)无法解析主机:'http gitlab-ci runner
- sql-server - EF 6 和多对多关系
- swift - 在 Swift 中获取嵌入式 UIElement 在屏幕坐标中的位置
- c - C语言——使用struct形成矩阵
- amazon-web-services - 如何修复 s3cmd 响应中不正确的公共 url?
- android-studio - 将精灵附加到子弹 - Box2D LibGDX kotlin
- c# - 有没有办法检查使用了哪个 Split() 元素?
- python - 从内置对象继承时如何分配给基类对象?