При попытке скомпилировать следующий код:
class LoginViewModel: ObservableObject, Identifiable {
@Published var mailAdress: String = ""
@Published var password: String = ""
@Published var showRegister = false
@Published var showPasswordReset = false
private let applicationStore: ApplicationStore
init(applicationStore: ApplicationStore) {
self.applicationStore = applicationStore
}
var passwordResetView: some View {
PasswordResetView(isPresented: $showPasswordReset) // This is where the error happens
}
}
Где PasswordResetView выглядит так:
struct PasswordResetView: View {
@Binding var isPresented: Bool
@State var mailAddress: String = ""
var body: some View {
EmptyView()
}
}
}
Я получаю ошибку при компиляции
Cannot convert value of type 'Published<Bool>.Publisher' to expected argument type 'Binding<Bool>'
Если я использую опубликованную переменную вне класса LoginViewModel, она просто отлично работает:
struct LoginView: View {
@ObservedObject var viewModel: LoginViewModel
init(viewModel: LoginViewModel) {
self.viewModel = viewModel
}
var body: some View {
PasswordResetView(isPresented: self.$viewModel.showPasswordReset)
}
}
Есть предложения, что я здесь делаю неправильно? Есть ли шанс передать опубликованную переменную в качестве привязки из класса-владельца?
Спасибо!