在SwiftUI中从外部类打开.sheet()

问题描述 投票:0回答:1

[我已经尝试了使用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
    }
}
swiftui swift5
1个回答
0
投票

它需要使用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
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.