我被认为是 SwiftUI 的新手,我有下面的 ViewModel。但我不确定 MyViewModel 应该是单例的。这样的用法正确吗?符合 ObservableObject 的最佳实践/用法是什么?
class MyViewModel: ObservableObject {
static let shared: MyViewModel = MyViewModel()
@Published var result: String = ""
private init() { }
// some functions
}
struct ContentView: View {
@ObservedObject private var vm = MyViewModel.shared
var body: some View {
Text(vm.result)
}
}
Run Code Online (Sandbox Code Playgroud) 我有以下测试代码。但是,当点击编辑按钮时,文本不会改变。我找不到任何相关信息。如何检查/控制editButton/editMode状态变化?
struct TestView: View {
@State private var list = [1,2,3,4,5]
@State private var selection = Set<Int>()
@Environment(\.editMode) var mode
var body: some View {
NavigationView {
List(selection: $selection) {
ForEach(list, id: \.self) { item in
Text("\(item)")
}
}
.toolbar {
ToolbarItem(placement: .navigationBarLeading) {
EditButton()
}
ToolbarItem(placement: .navigationBarTrailing) {
if mode?.wrappedValue.isEditing ?? false {
Text("Editing")
} else {
Text("Not Editing")
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)