我在VStack中动态创建一个TextField。这里的TextField创建如下:
struct Input: View {
var title: String
@State var value:String
var disableInputMode:Bool = true
var body: some View {
VStack {
Text(title)
.frame(maxWidth: .infinity, alignment: .leading)
.foregroundColor(Color("SecondaryTextColor"))
TextField("", text: $value)
.disabled(disableInputMode)
.frame(maxWidth: .infinity, alignment: .leading)
Divider()
}
.padding()
}
}
并且这些TextField依赖于其他一些数据字段(在运行时确定):
ScrollView {
VStack {
ForEach(detailsViewModel.details) { datum in
Input(title: datum.title, value: datum.detail!)
}
}.frame(maxWidth: .infinity)
.padding()
}.background(Color("Light"))
.cornerRadius(25)
.padding()
现在,当用户输入数据并尝试应用时,我找不到如何从其他视图获取这些输入。
1条答案
按热度按时间w6lpcovy1#
解决方案1(iOS 14 *)
使用onChange修饰符检测TextField值更改并将其更新到您的模型。
解决方案2(iOS 13 *)
扩展绑定以处理自定义onChange
然后,您的输入视图变为
如何用途:
这两种解决方案都可以使用输入视图,如下所示。