swiftui - 将货币符号动态组合到 TextField 文本
问题描述
是否可以在通过 TextField 在单个文本行上显示之前将货币符号动态组合到某些文本?目前,我的货币符号位于 TextField 文本“输入金额 >”上方的行中
此代码产生错误:“无法分配给属性:'self' 是不可变的”和“类型 '()' 不能符合 'View';只有 struct/enum/class 类型可以符合协议。”
我想在表单中使用这样的东西。
struct ContentView: View {
@State private var moneyS: String = ""
var curr: String = ""
var curSymb: Int = 2
var mxx: String = ""
var body: some View {
Text("Blah Blah Blah")
switch curSymb {
case 1:
curr = "$"
case 2:
curr = "€"
default:
curr = "£"
}
mxx = "Enter Amount > " + curr
TextField(mxx, text: $moneyS)
.keyboardType(.decimalPad)
}
}
解决方案
是的,这当然是可能的。默认情况下,它使用VStack
-like 布局并垂直放置所有视图。我们可以使用HStack
(horizontal stack) 来水平对齐您的文本视图。
这是更新的版本:
struct ContentView: View {
...
var curr: String {
switch curSymb {
case 1: return "$"
case 2: return "€"
default: return "£"
}
}
var body: some View {
HStack(alignment: .firstTextBaseline) { // note that we use firstTextBaseline in order to keep the text aligned even if you decided to have different font for every part of the text
Text("Blah Blah Blah")
TextField("Enter Amount > " + curr, text: $moneyS)
.keyboardType(.decimalPad)
}
}
}
另外,请注意,我还将curr
计算移至一个变量,以使body
代码保持较小。
推荐阅读
- javascript - 使用百分比而不是像素会改变 html 5 画布的属性吗?
- powerbi - 使用从另一个表中查找的列创建列
- javascript - 如何使用 Next.js 和 Rails 后端安全地存储 JWT?
- vue.js - 在方法中调用 API 并获取 [object Promise]
- sql - 编写 SQL 查询,返回主列中每个排序值的结果
- angular - 在 Angular 8 中,如何从浏览器控制台访问注入的服务?
- django - 'PermissionError: [Errno 13] Permission denied:' 当上传到 /media/
- r - 如何在单个图中创建累积降水与温度的关系图
- java - 在 BufferedReader 上使用 readLine() 方法会导致挂起?
- sql - 用零填充 PostgreSQL 中缺失的日期