如何将类中的状态持久化到单独的SwiftUI视图中



我在将类的状态持久化到SwiftUI结构的视图中时遇到问题。

我有一个在一个文件中定义的充当控制器的类,以及一个SwiftUI视图,该视图应该根据控制器中的属性进行更改。

我已经将这些文件定义为:

时钟控制器swift

class ClockController:ObservableObject {
@Binding var isAM:Bool
init(){
self.isAM = false
}
func toggleAMPM(){
self.isAM = !self.isAM
}
}

和TestUI.swift

struct TestUI:View{
@ObservedObject var clockController:ClockController = ClockController()

var body: some View {
Button(action: {
self.clockController.toggleAMPM()
}){
Text("Toggle")
}
Text(self.clockController.isAM ? "AM" : "PM")
}
}

我希望每次self.clockController.isAM变量更改时(当按下切换按钮时(,TestUI都会更改/重新渲染,这就是为什么我将clockController设置为ObservableObject,并将@Binding关键字添加到isAM属性中。然而,我在ClockController的初始化器方法上的设置不断出现以下错误:

'self' used in property access 'isAM' before all stored properties are initializedReturn from initializer without initializing all stored properties

如何使我的TestUI绑定到ClockController的isAM变量?

all!我自己解决了这个问题。我需要从ClockController的isAM属性中删除@Binding关键字,并将其更改为@Published。成功了。

工藤的YouTube和这个视频:https://youtu.be/-yjKAb0Pj60?t=919

最新更新