swift - 如果语句在 VStack swiftUI 中不起作用
问题描述
我试图根据我在视图中创建的变量 r0 显示一些数字。但是当我尝试运行我的代码时,我收到以下错误:编译器无法在合理的时间内对这个表达式进行类型检查。有没有办法解决这个问题?
我在 Swift Playground 中运行它
class MyVariables: ObservableObject {
@Published var yourVariable = 500000.0
@Published var otherVariable = "this will be a string"
@Published var slideone = 500000.0
@Published var slidetwo = 5000.0
@Published var washingHandsToggle: Bool = true
@Published var wearingMaskToggle: Bool = true
@Published var coverMouthToggle: Bool = true
@Published var quarantineToggle: Bool = true
@Published var rvalues = [6.5, 5.9, 5.3, 4.8, 4.2, 3.5, 3.1, 2.9, 1.75, 1.5, 1.2, 1.05, 0.92, 0.82, 0.75, 0.7]
}
struct SecondView : View {
@Environment(\.presentationMode) var presentationMode
@EnvironmentObject var model: MyVariables
var r0 : Double {
model.rvalues[(model.wearingMaskToggle ? 1:0) + (model.washingHandsToggle ? 2:0) + (model.quarantineToggle ? 8:0) + (model.coverMouthToggle ? 4:0)]
}
var body: some View {
VStack {
VStack {
HStack {
Button(action: {
self.presentationMode.wrappedValue.dismiss()
}, label: {
Image(systemName: "arrow.left")
.font(.system(size: 30))
.foregroundColor(Color.blue)
}).padding()
Spacer()
}
}
GeometryReader { gp in
ZStack {
Image(uiImage: UIImage(named: "\(self.r0).jpg")!).resizable()
.frame(width: gp.size.width/1.15, height: gp.size.width/1.91)
.overlay(GeometryReader { gp in
VStack {
if self.r0 > 1 {
Text("\(Int(self.model.slideone))")
.foregroundColor(Color.black)
.position(x: gp.size.width / 100000, y: gp.size.height / 5.55)
Text("\(Int((self.model.slideone - self.model.slidetwo)/2))")
.foregroundColor(Color.black)
.position(x: gp.size.width / 100000)
.padding(.top, gp.size.height/4.75)
Text("\(Int(self.model.slidetwo))")
.foregroundColor(Color.black)
.position(x: gp.size.width / 100000, y: gp.size.height / 22.5)
.padding(.top, gp.size.height/5.675)
} else{
Text("\(Int(self.model.slidetwo))")
.foregroundColor(Color.black)
.position(x: gp.size.width / 100000, y: gp.size.height / 5.55)
Text("\(Int(self.model.slidetwo/2))")
.foregroundColor(Color.black)
.position(x: gp.size.width / 100000)
.padding(.top, gp.size.height/4.75)
}
}
VStack {
HStack {
Text("10")
.foregroundColor(Color.black)
.position(x: gp.size.width / 5.75, y: gp.size.height / 1.0675)
Text("20")
.foregroundColor(Color.black)
.position(x: gp.size.width / 5.75, y: gp.size.height / 1.0675)
Text("20")
.foregroundColor(Color.black)
.position(x: gp.size.width / 6.65, y: gp.size.height / 1.0675)
Text("30")
.foregroundColor(Color.black)
.position(x: gp.size.width / 8.2, y: gp.size.height / 1.0675)
Text("40")
.foregroundColor(Color.black)
.position(x: gp.size.width / 10.4, y: gp.size.height / 1.0675)
Text("50")
.foregroundColor(Color.black)
.position(x: gp.size.width / 14.5, y: gp.size.height / 1.0675)
Text("60")
.foregroundColor(Color.black)
.position(x: gp.size.width / 22.5, y: gp.size.height / 1.0675)
Text("70")
.foregroundColor(Color.black)
.position(x: gp.size.width / 56, y: gp.size.height / 1.0675)
}
}
}
)
}.padding(.leading, gp.size.width / 15)
Spacer()
}
}.background(Color.white)
}
}
解决方案
推荐阅读
- powershell - 如何使用凭证调用存储在字符串中的powershell命令?
- ios - 在 Xcode 10 中构建时重置应用程序后,String.hashValue 不唯一
- python - 如何替换 django 模板中的某些特定字符?
- angular - Ngmodel 值更新错误?
- x264 - 为什么 pkg-config 用另一个默认值覆盖“前缀”?
- cockroachdb - pq:集群版本不支持 JSONB(需要>= 2.0)
- python - 如何在python中返回连接列表?
- oracle - 表达 '
' 不能用作赋值目标 - python - 在python中的networkx图中找到最大加权边
- vba - 用于将嵌入的 Word 文档保存为 PDF 的 Excel 宏