web-dev-qa-db-ja.com

'published <bool> .publisher'の値を予想引数型 'binding <bool>'に変換できません。

次のコードをコンパイルしようとしているとき

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)
    }
}
 _

私がここで間違っていることを提案しますか?特定のクラスの内側からのバインディングとして公開された変数を渡すことができる機会はありますか?

ありがとう!

8
Jan Koch

Error: "type 'binding'の値を予想される引数の値の値を変換できません" type 'bool' "ソリューションは以下の例のようにwrappedValueを使用することです。

プロパティを持つMyObjectオブジェクトがある場合は、「バインディング」の代わりにVanilla Bool Typeとして使用する必要があります。このmyView.disabled($ myObject.isenabled.WrappedValue)

0
Amir Alagic