【发布时间】:2021-05-09 13:35:45
【问题描述】:
我有一个 ObservedObject AppStatus 类,它内部有多个 Published 类。如果我只有孩子方面的水平,那么一切都很好。
当我有一个类 RecordingTimeManager 内部有另一个变量(2 级子级)时,问题就来了。当我按下按钮时,变量 maxRecordingTime 正在正确更改,它会打印“15 FifthSeconds”,但前景颜色没有触发更改。我不确定这是否是 SwiftUI 错误,或者我应该以另一种方式构建关系:
// 应用状态
// Recording
@Published var recordingTimeManager: RecordingTimeManager = RecordingTimeManager()
// 录音时间管理器
class RecordingTimeManager {
@Published var maxRecordingTime: TimeSeletedTime = .sixteenSeconds
...
// 需要根据 maxRecordingTime 更改来更改不透明度的 SwiftUI 组件(.foregroundColor 不会更改)
Button {
appStatus.recordingTimeManager.maxRecordingTime = .fifteenSeconds
print("15 \(appStatus.recordingTimeManager.maxRecordingTime)")
} label: {
Text("15")
.font(Font.custom("BwGradual-Bold", size: 15))
.foregroundColor(appStatus.recordingTimeManager.maxRecordingTime == .fifteenSeconds ? CLAPSOFFWHITE : TRIBESGREY)
}
非常感谢,
【问题讨论】:
-
你能再分享一些代码吗?另外,您是否缺少添加 ObservableObject 协议?
-
将 RecodingTimeManager 设为 Struct 并从中删除 @published 属性。