[英]SwiftUI text field text color issue
我遇到了 TextField 问题(正在输入的文本的颜色)。 我正在使用 MVVM 模式,我的代码如下:
import SwiftUI
struct ContentView: View {
@ObservedObject var viewModel: ViewModel
var body: some View {
CustomView(email: $viewModel.dataModel.emailID)
}
}
struct CustomView: View {
@Binding var email: String
var body: some View {
VStack {
TextField("email", text: $email)
.foregroundColor(.black)
.frame(height: 30.0)
.textContentType(.emailAddress)
.keyboardType(.emailAddress)
.background(Color.white)
.padding([.top, .bottom])
Spacer()
}.padding(20)
}
}
public final class ViewModel: ObservableObject {
/// data model
public var dataModel: DataModel
public init (model: DataModel) {
self.dataModel = model
}
}
public final class DataModel {
@Published public var emailID: String
public init(emailID: String) {
self.emailID = emailID
}
}
确切的问题是,使用上面的代码,当我在文本字段中键入文本时,文本颜色也是与背景颜色相同的白色,尽管前景色是黑色。 请告诉我哪里出错了。 我正在从 SceneDelegate 实例化 ContentView,如下所示:
let contentView = ContentView(viewModel: ViewModel(model: DataModel(emailID: "")))
你打破了束缚链。 这是固定代码(请注意,一些初始化已更改:):
struct ContentView: View {
@ObservedObject var viewModel: ViewModel
var body: some View {
CustomView(model: viewModel.dataModel)
}
}
struct CustomView: View {
@ObservedObject var model: DataModel
var body: some View {
VStack {
TextField("email", text: $model.emailID)
.foregroundColor(.black)
.frame(height: 30.0)
.textContentType(.emailAddress)
.keyboardType(.emailAddress)
.background(Color.white)
.padding([.top, .bottom])
Spacer()
}.padding(20)
}
}
public final class ViewModel: ObservableObject {
/// data model
public var dataModel: DataModel
public init (model: DataModel) {
self.dataModel = model
}
}
public final class DataModel: ObservableObject {
@Published public var emailID: String
public init(emailID: String) {
self.emailID = emailID
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.