gpt4 book ai didi

SwiftUI 如何从另一个类访问 ContentView 变量

转载 作者:行者123 更新时间:2023-12-04 12:58:59 27 4
gpt4 key购买 nike

我是 SwiftUI 的新手。试图推进我的计时器应用程序,我被卡住了。

在我的 ContentView 中,我有两个 ObservedObject,一个是管理计时器功能的 Timer 对象,另一个是存储所有用户设置的 Settings 对象。我的目标是,如果用户更改切换设置,则会在 ContentView 类中定义的 MyTimer 实例中设置一个变量。

我的问题是我不知道如何从类设置访问该实例。

这可能是一个非常简单的解决方案,但是,我现在正在努力让它工作一段时间,但我运气不好。

感谢您的帮助!


struct ContentView: View {

@ObservedObject var myTimer = MyTimer()
@ObservedObject var settings = Settings()

...

Toggle(isOn: self.$settings.muteInSilenceMode) {
Text("Mute sound in silence mode")
}
...

}

class Settings: ObservableObject {

...

@Published var muteInSilenceMode: Bool = UserDefaults.standard.bool(forKey: "muteInSilenceMode"){
didSet{
UserDefaults.standard.set(self.muteInSilenceMode, forKey: "muteInSilenceMode"

// I want to access the Timer object from here

}
}
...

}

最佳答案

我不知道您的 Settings() 与您的问题有什么关系,但我认为您的问题的答案如下所示:

struct ContentView : View {

@ObservedObject var myTimer = MyTimer()
@ObservedObject var settings = Settings()

@State private var timer: Bool

var body: some View {

let toggleTimer = Binding<Bool> (
get: { self.timer},
set: { newValue in
self.timer = newValue
if self.timer {
myTimer.theVaribableYouWantToChange = true // Didn't know the name of your variable.
} else {
// Whatever shall happen if the Toggle gets deactivated.
}
})

return HStack {
Toggle(isOn: toggleTimer) {Text("Activate") }
}
}
}

关于SwiftUI 如何从另一个类访问 ContentView 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61962161/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com