Xcode中如何通过按钮将@State状态变量重置为初始值
解决方案
方案1:直接赋值重置(适合变量数量少的场景)
直接在删除按钮的点击回调中给所有@State变量赋值初始值即可,修改你的按钮代码如下:
primaryButton: .destructive(Text("Delete")) { statsValue1 = 0 statsValue2 = 0 statsValue3 = 0 statsValue4 = 0 statsValue5 = 0 statsValue6 = 0 }, secondaryButton: .cancel()
方案2:封装结构体重置(适合变量多、后续维护需求高的场景)
把所有统计相关的变量封装为一个值类型的结构体,重置时只需重新实例化结构体即可,代码更简洁易维护:
- 首先定义统计数据结构体
struct Stats { var value1 = 0 var value2 = 0 var value3 = 0 var value4 = 0 var value5 = 0 var value6 = 0 }
- 替换主视图中的@State定义
@State var stats = Stats()
- 修改按钮点击逻辑
primaryButton: .destructive(Text("Delete")) { stats = Stats() }, secondaryButton: .cancel()
注意事项
- @State变量的修改操作必须在当前视图的执行路径内完成,不要在外部类、全局函数中修改当前视图的@State,否则会不生效
- @State只适合存储值类型,如果你之前把这些变量存在类实例里,需要改为结构体存储才能正常触发视图刷新
内容的提问来源于stack exchange,提问作者Dylan
相关产品推荐
相关产品推荐

