次のコードをコンパイルしようとしているとき
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)
}
}
_
私がここで間違っていることを提案しますか?特定のクラスの内側からのバインディングとして公開された変数を渡すことができる機会はありますか?
ありがとう!
Error: "type 'binding'の値を予想される引数の値の値を変換できません" type 'bool' "ソリューションは以下の例のようにwrappedValueを使用することです。
プロパティを持つMyObjectオブジェクトがある場合は、「バインディング」の代わりにVanilla Bool Typeとして使用する必要があります。このmyView.disabled($ myObject.isenabled.WrappedValue)