繁体   English   中英

SwiftUI 文本字段文本颜色问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM