【发布时间】:2022-06-22 22:10:24
【问题描述】:
我想使用struct 而不是class 作为我的View 的状态,并且您可能知道,ObservableObject 是一个只有类才能遵守的协议。
我是否有将我的结构包装在ViewModel 或其他类似类型的对象中?如果我不这样做会怎样?
现在的样例:
import Foundation
import SwiftUI
struct Object3D {
var x : Int
var y : Int
var z : Int
var visible : Bool
}
struct NumberView<Number : Strideable> : View {
var label : String
@State var number : Number
var body : some View {
HStack {
TextField(
self.label,
value: self.$number,
formatter: NumberFormatter()
)
Stepper("", value: self.$number)
.labelsHidden()
}
}
}
struct ObjectInspector : View {
@State var object : Object3D
var body : some View {
VStack {
Form {
Toggle("Visible", isOn: $object.visible)
}
Divider()
Form {
HStack {
NumberView(label: "X:", number: object.x)
NumberView(label: "Y:", number: object.y)
NumberView(label: "Z:", number: object.z)
}
}
}
.padding()
}
}
struct ObjectInspector_Previews: PreviewProvider {
static var previews: some View {
ObjectInspector(object: Object3D(x: 0, y: 0, z: 0, visible: true))
}
}
【问题讨论】:
-
学习一些 SwiftUI 数据流教程。
标签: swift swiftui view viewmodel observableobject