swift - 返回的状态值未更新
问题描述
使用下面代码片段中的 getAmount() 方法,我尝试将用户输入返回到另一个视图,但每次我从另一个视图调用 getAmount() 时,返回的值都是“0.0”,尽管我不确定为什么 - 虽然视图 Text(amount) 始终显示最新的用户输入。
import SwiftUI
struct TableRow: View {
var label: String
@State var amount = "";
var indent: CGFloat = 0.0
var body: some View {
HStack() {
Spacer()
.frame(width: indent)
Text(label)
Spacer()
Text("£")
TextField(String(format: "%.2f", amount), text: $amount)
.keyboardType(.decimalPad)
.frame(width: 75.0)
Text(amount)
}
}
func getAmount() -> Double {
// print("Amount is \(amount)")
return NumberFormatter().number(from: amount)?.doubleValue ?? 1.0
}
}
解决方案
我的猜测是您可能在不知不觉中从您的视图副本而不是实际视图调用该方法。结构是 Swift 中的值类型,而不是引用类型,这意味着如果你将它们传递给它们,它们会被复制而不是像类那样通过引用传递。你可能会调查那个。否则,我需要查看您在哪里调用该函数以提供更多帮助。
推荐阅读
- haskell - 在 Haskell 中不断收到解析缩进错误我做错了什么
- python - 如何将变量分配给保存在Python文本文件中的字典
- javascript - Mikrotik JS JSON 到数组对象
- database - 如何使用 pgadmin3 连接到不使用密码的 postgres 数据库..?
- javascript - 检查给定对象的属性是否存在
- javascript - 关键事件后移除孩子
- javascript - Bootstrap `nav` 元素不可点击
- java - 为什么实体没有存储在数据库中?
- c++ - MD5 哈希的密码盐字符串的格式是什么?
- python - Easygui 没有安装