Binding 绑定突然在iOS14中不起作用
在iOS 14之前,我的项目可以很好地使用以下代码Binding 绑定突然在iOS14中不起作用,binding,swiftui,ios14,observableobject,Binding,Swiftui,Ios14,Observableobject,在iOS 14之前,我的项目可以很好地使用以下代码 struct LoginView: View, Resolving { @ObservedObject var loginUIService: LoginUIService = Resolver.resolve() ... var body: some View { ... TextField(LocalizedString.Placeholder.email.localized, te
struct LoginView: View, Resolving {
@ObservedObject var loginUIService: LoginUIService = Resolver.resolve()
...
var body: some View {
...
TextField(LocalizedString.Placeholder.email.localized, text: self.$loginUIService.loginViewModel.emailAddress)
...
}
}
这是我的部分服务课
class LoginUIService: ObservableObject, Resolving {
@Published var loginViewModel: LoginViewModel = Resolver.resolve()
...
}
然后是视图模型
class LoginViewModel: ObservableObject {
//MARK:- Properties
@Published var emailAddress: String {
didSet {
checkIsValid()
}
}
@Published var password: String{
didSet {
checkIsValid()
}
}
@Published var isValid = false
//MARK:- Init Methods
init() {
emailAddress = ""
password = ""
}
init(emailAddress: String, password: String) {
self.emailAddress = emailAddress
self.password = password
}
fileprivate func checkIsValid() {
isValid = emailAddress.isEmpty == false && password.isEmpty == false && emailAddress.contains("@")
}
}
在iOS 13中,这段代码100%正常工作,没有任何问题。现在,当在iOS 14设备上运行时,当点击文本字段时,我在控制台中得到以下输出
Binding<String>(transaction: SwiftUI.Transaction(plist: []), location: SwiftUI.LocationBox<SwiftUI.(unknown context at $7fff562e301c).ProjectedLocation<SwiftUI.LocationBox<SwiftUI.ObservableObjectLocation<Recon.LoginUIService, Recon.LoginViewModel>>, Swift.WritableKeyPath<Recon.LoginViewModel, Swift.String>>>, _value: "")
绑定(事务:SwiftUI.transaction(plist:[]),位置:SwiftUI.LocationBox,_值:“”)
最近有人遇到过这个问题吗?我不同意
self.$loginUIService.loginViewModel.emailAddress
是ObservedObject
绑定的有效用法。。。所以我永远不会建议这样使用它。我遇到了这个问题。我目前正在向苹果提交一份bug报告。我使用两个单独的文本字段和一个字符串绑定。当我编辑绑定和第二个文本字段中的文本时,它似乎抛出了这个异常。我猜想是什么原因导致第二个TextField被重新绘制,从而导致它失去其绑定事务范围。如果我找到根本原因,我会向您报告。我不能同意self.$loginUIService.loginViewModel.emailAddress
是observeobject
绑定的有效用法。。。所以我永远不会建议这样使用它。我遇到了这个问题。我目前正在向苹果提交一份bug报告。我使用两个单独的文本字段和一个字符串绑定。当我编辑绑定和第二个文本字段中的文本时,它似乎抛出了这个异常。我猜想是什么原因导致第二个TextField被重新绘制,从而导致它失去其绑定事务范围。如果我找到根本原因,我会再报告的。