小编Ken*_*Nur的帖子

符合 ObservableObject 的 SwiftUI 类应该是 Singleton?

我被认为是 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)

singleton swift swiftui observableobject

7
推荐指数
1
解决办法
4317
查看次数

如何在 SwiftUI 中检查 EditButton/EditMode 状态

我有以下测试代码。但是,当点击编辑按钮时,文本不会改变。我找不到任何相关信息。如何检查/控制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)

editmode environment-variables swift swiftui

2
推荐指数
1
解决办法
2189
查看次数