我有一个叫做Startup的类。在此类中,我有一堆在应用启动时从SceneDelegate调用的函数。
例如:
class Startup {
func doThis() {
print("I'm doing this")
}
}
如果有必要,它有时可以下载数据。发生这种情况时,我想触发一个带有活动指示器的警报,以阻止用户输入UI直到完成操作。
我在ContentView中设置了所有活动指示器警报,该警报在EnvironmentObject var Bool上触发。因此,要激活此UI阻止警报,我要做的就是切换我的环境变量。
我遇到的问题是我无法从我的班级内触发此环境变量。我尝试了以下方法:
当我放@EnvironmentObject var dataBusy: DataBusy
时
并从函数dataBusy.isBusy = true
中调用它,我收到错误消息:
致命错误:未找到DataBusy类型的ObservableObject。
哪个表明我需要在实例化env对象时将其推入类的环境,但是,当我尝试这样做时,我得到:
元组类型'()'的值没有成员'environmentObject'
因此,我无法将此env var添加到此类对象中。
尝试使用:
@ObservedObject var dataBusy = DataBusy()
在我的课堂上,似乎没有出错,但是切换此操作不会触发我的事件。
我想不出任何其他方法来通过此启动类与View进行通信。
有什么想法吗?
答案 0 :(得分:1)
以下代码有效,许多人发现自己遗漏或误解的地方。
linewidth
答案 1 :(得分:0)
知道了。
E.Coms的回答非常好,但是,我正在调用func,该func将从另一个函数内部,另一个类的另一个函数而不是直接由场景委托负责此操作。
要获得它,我必须将DataBusy
对象dataBusy
从场景委托传递给类func作为参数:
//Scene Delegate:
let dataBusy = DataBusy() //my Observed Object Class
let myClass = MyClass(); //instantiate my class
myClass.myFunc(data: dataBusy) //pass the object through to the class function
这样,当我的类函数中出现时间时,我可以切换变量,并且一切正常。
谢谢您的输入。