小编bri*_*ood的帖子

SwiftUI - 环境对象不更新 UI

我的应用程序有一个按钮可以生成绿色或红色背景。用户反复按下按钮,每次都会生成绿色或红色,并将结果记录到名为“当前会话”的可观察对象中。当前总数显示在由胶囊组成的自定义视图中。由于某种原因,视图不会更新总计并一直显示 0。

我尝试在 ResultsBar 中添加 numberOfGreens 的状态绑定,但这也不起作用。每次还是只显示0。环境已添加到我的所有视图中。我尝试打印结果,结果数字在控制台中显示正确,但用户界面不会更新。有趣的是, TrialsRemaining 变量在我的应用程序的其他屏幕上运行得很好,在需要时更新也没有问题。此外,ResultsBar 在预览中工作得非常好。

class CurrentSession: ObservableObject {

  @Published var trialsRemaining: Int = 100
  @Published var numberOfGreens: Int = 0
  @Published var numberOfReds: Int = 0

  func generateGreenOrRed() {
    ...
    if resultIsGreen {numberOfGreens += 1}
    else if resultIsRed {numberOfReds += 1}
    trialsRemaining -= 1
  }
}
Run Code Online (Sandbox Code Playgroud)
struct ResultsBar: View {
  let totalBarWidth: CGFloat = UIScreen.main.bounds.width - 48
  var onePercentOfTotalWidth: CGFloat { return totalBarWidth/100 }
  var numberOfGreens: Int

  var body: some View {
    ZStack(alignment: .leading) …
Run Code Online (Sandbox Code Playgroud)

user-interface state ios swift swiftui

5
推荐指数
1
解决办法
6808
查看次数

标签 统计

ios ×1

state ×1

swift ×1

swiftui ×1

user-interface ×1