[我已经尝试了使用ObservableObject和@Published的一些变体,以尝试通过外部类通过更新从我的ContentView中打开工作表,但我无法使其正常工作。
如何使用可观察/可观察对象实现此目的?
import SwiftUI
class SheetObservable: ObservableObject {
@Published var isActive = false
}
struct ContentView: View {
@ObservedObject var Sheet = SheetObservable()
var body: some View {
Button(action:{
Actions().openSheet()
}){
Text("Open Sheet")
}
.sheet(isPresented: self.$Sheet.isActive) {
EmptyView()
}
}
}
class Actions {
@ObservedObject var Sheet = SheetObservable()
public func openSheet() {
print("openSheet fired()")
self.Sheet.isActive = true
}
}
它需要使用ObjservableObject
的相同实例,所以这里是固定代码
struct ContentView: View {
@ObservedObject var Sheet = SheetObservable()
var body: some View {
Button(action:{
Actions(sheet: self.Sheet).openSheet()
}){
Text("Open Sheet")
}
.sheet(isPresented: self.$Sheet.isActive) {
EmptyView()
}
}
}
class Actions {
@ObservedObject var Sheet: SheetObservable
init(sheet: SheetObservable) {
self.Sheet = sheet
}
public func openSheet() {
print("openSheet fired()")
self.Sheet.isActive = true
}
}