SwiftUI 更新类子变量

Posted

技术标签:

【中文标题】SwiftUI 更新类子变量【英文标题】:SwiftUI updating class sub variables 【发布时间】:2021-03-01 05:07:22 【问题描述】:

我想要一种使用单个状态变量来更新 UI 状态的简单方法。 假设我有一个类 Position 实例变量 x 和 y。 想象一下,我有一个看起来像这样的 UI 视图......

@State var position: Position
var body: some View
    VStack
        Text("x: \(position.x)")
        Text("y: \(position.y)")
    

我想维护一个 Position 的状态变量,它可以更新 x 和 y,如上所示。但是,您可能知道,如果 UI 视图上的 x 和 y 值在此位置变量内发生更改,则此代码不会更新它们。

有没有人知道每次 x 和 y 更改时更新此视图的方法,而不必为 x 和 y 设置单独的状态变量,或者这是唯一的方法吗?

【问题讨论】:

【参考方案1】:

有没有人知道每次 x 和 y 变化时更新此视图的方法,而不必为 x 和 y 设置单独的状态变量,或者这是唯一的方法吗?

Position 应该是 struct 才能有你需要的行为,比如

struct Position 
  var x: CGFloat
  var y: CGFloat

在这种情况下,只要x/y 中的任何一个更改了单个@State var position,就会更新视图。

【讨论】:

以上是关于SwiftUI 更新类子变量的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI:通过更新变量来动画波浪不起作用

SwiftUI @State 变量未更新

SwiftUI 状态变量未更新

异步firebase调用后SwiftUI不更新变量

SwiftUI 中的状态变量未更新

SwiftUI:NavigationLink 在变量更新时弹出