【发布时间】:2021-07-08 06:49:06
【问题描述】:
所以我目前正在掌握 swift 和 swiftui 并且遇到了 Observable 对象的问题。我希望能够通过 2 个不同的视图共享变量的值,因此选择使用可观察对象。持续时间和间隔变量将使用设置视图上的滑块设置,然后将用于我的主视图中的逻辑。
struct Settings: View {
@EnvironmentObject var appInfo: AppInformation
var body: some View {
NavigationView {
ZStack {
VStack (spacing: 35){
HStack {
Text("Duration")
.font(.system(size: 23, weight: .bold, design: .rounded))
.padding(.leading, 25)
Spacer()
Slider(value: appInfo.duration, in: 1...60, step: 1)
.padding(.trailing, 20)
.padding(.leading, 20)
Text("\(Int(appInfo.duration))")
.padding(.trailing, 30)
.font(.system(size: 23, weight: .medium, design: .rounded))
}
.padding(.top, 100)
HStack {
Text("Interval ")
.font(.system(size: 23, weight: .bold, design: .rounded))
.padding(.leading, 25)
Spacer()
Slider(value: appInfo.interval, in: 1...60, step: 1)
.padding(.trailing, 20)
.padding(.leading, 20)
Text("\(Int(appInfo.interval))")
.padding(.trailing, 30)
.font(.system(size: 23, weight: .medium, design: .rounded)).navigationTitle("Settings")
}
Spacer()
}
}
}
}
struct Settings_Previews: PreviewProvider {
static var previews: some View {
Settings()
.environmentObject(AppInformation())
}
}
}
class AppInformation: ObservableObject {
var duration = 0.0
var interval = 0.0
}
但是当尝试在模拟器中预览或晒出我的应用程序时,它会抛出错误“A View.environmentObject(_:) for AppInformation may be missing as an original of this view”。
它会在我将变量引用为滑块值的这些行上引发错误,即使我已经在更下方的文本视图中引用了该变量,这似乎没有任何问题。
.padding(.trailing, 20)
.padding(.leading, 20)
Text("\(Int(appInfo.duration))")
.padding(.trailing, 30)
.font(.system(size: 23, weight: .medium, design: .rounded))
Slider(value: appInfo.interval, in: 1...60, step: 1)
.padding(.trailing, 20)
.padding(.leading, 20)
【问题讨论】:
标签: swift swiftui observableobject