SwiftUI: How to observe a TextField value
Aug 19, 2022
TextField : A control that displays an editable text interface.
Multiple ways to observe the SwiftUI TextField
value
- Using Closure
- Using onChange modifier
- Using Publisher(Combine)
import SwiftUI
import Combinestruct ContentView: View { @State private var Text1 = ""
@State private var Text2 = ""
@ObservedObject var viewModel = ObserveTextFieldValue() var body: some View { //MARK: Using Closure
TextField("Enter text1", text: $Text1){ editing in
print(editing)
}onCommit: {
print("Committed")
} //MARK: Using .onChange Modifier
TextField("Enter text2", text: $Text2).onChange(of: Text2){
text in
print(text)
} //MARK: Using Viewmodel and Publisher(Combine)
TextField("Enter text3", text: $viewModel.value) }}
class ObserveTextFieldValue: ObservableObject { @Published var value: String = ""
private var cancellables = Set<AnyCancellable>() init() {
$value.sink(receiveValue: {val in
print(val)
}).store(in: &cancellables)
}
}