我正在查看一封電子郵件,我想將該值傳遞給 viewModel。但我不確定如何。
電子郵件視圖
import SwiftUI
struct EmailView: View {
@State private var email: String = ""
init(viewModel:EmailViewModel) {
self.viewModel = viewModel
}
TextField("", text: $email)
func sendButtonAction() {
viewModel.updateDataToServer()
}
}
電子郵件視圖模型
import Foundation
import SwiftUI
class EmailViewModel: NSObject, ObservableObject {
var emailText = ""
convenience init(emailText: String) {
self.init()
self.emailText = emailText
}
func updateDataToServer() {
print("Show email text" emailText). // not getting email value here???
}
}
我從其他螢屏來到電子郵件螢屏。我應該如何在此處傳遞電子郵件值表單?
NavigationLink(destination: EmailView(viewModel: EmailViewModel(emailText: "")), isActive: $pushToMail) {
EmptyView()
}.hidden()
uj5u.com熱心網友回復:
嘗試這種方法,如示例代碼所示:
import SwiftUI
@main
struct TestApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
struct ContentView: View {
@StateObject var emailModel = EmailViewModel()
var body: some View {
NavigationView {
VStack (spacing: 55) {
NavigationLink(destination: EmailView(viewModel: emailModel)) {
Text("go to EmailView")
}
Text("email was: \(emailModel.emailText)")
}
}.navigationViewStyle(.stack)
}
}
class EmailViewModel: ObservableObject {
@Published var emailText = ""
func updateDataToServer() {
print("----> Show email text " emailText)
}
}
struct EmailView: View {
@ObservedObject var viewModel: EmailViewModel
var body: some View {
TextField("Enter your email", text: $viewModel.emailText).border(.green)
.onSubmit {
viewModel.updateDataToServer()
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/344339.html
上一篇:用正則運算式替換字串
