RxSwift error. Cannot invoke 'drive' with an argument list of type '(Driver)'











up vote
0
down vote

favorite












I try to bind tap on button to Driver and got following error:




Cannot invoke 'drive' with an argument list of type '(Driver)'




ViewModel



var closeButtonDidTapObserver: Driver<Void> { get } 


ViewController



closeButton.rx
.tap
.asDriver()
.drive(viewModel.input.closeButtonDidTapObserver)


How to resolve this?










share|improve this question




























    up vote
    0
    down vote

    favorite












    I try to bind tap on button to Driver and got following error:




    Cannot invoke 'drive' with an argument list of type '(Driver)'




    ViewModel



    var closeButtonDidTapObserver: Driver<Void> { get } 


    ViewController



    closeButton.rx
    .tap
    .asDriver()
    .drive(viewModel.input.closeButtonDidTapObserver)


    How to resolve this?










    share|improve this question


























      up vote
      0
      down vote

      favorite









      up vote
      0
      down vote

      favorite











      I try to bind tap on button to Driver and got following error:




      Cannot invoke 'drive' with an argument list of type '(Driver)'




      ViewModel



      var closeButtonDidTapObserver: Driver<Void> { get } 


      ViewController



      closeButton.rx
      .tap
      .asDriver()
      .drive(viewModel.input.closeButtonDidTapObserver)


      How to resolve this?










      share|improve this question















      I try to bind tap on button to Driver and got following error:




      Cannot invoke 'drive' with an argument list of type '(Driver)'




      ViewModel



      var closeButtonDidTapObserver: Driver<Void> { get } 


      ViewController



      closeButton.rx
      .tap
      .asDriver()
      .drive(viewModel.input.closeButtonDidTapObserver)


      How to resolve this?







      ios swift mvvm binding rx-swift






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited 4 hours ago









      Denis

      35313




      35313










      asked 6 hours ago









      Aleksei Danilov

      6517




      6517
























          1 Answer
          1






          active

          oldest

          votes

















          up vote
          0
          down vote













          As you are getting Driver from closeButton.rx .tap.asDriver() then you don't need a separate Driver object and you can remove this variable var closeButtonDidTapObserver: Driver { get }.



          In drive(...) you need to pass the UI element you want to bind with the button.



          Example,



          closeButton.rx.tap.asDriver()
          .drive(self.label.rx.text)
          .disposed(by: disposeBag)


          Or you can subscribe as below,



          closeButton.rx.tap.asDriver()
          .drive(onNext: { [weak self] in
          // Update ui element here
          }).disposed(by: disposeBag)





          share|improve this answer























            Your Answer






            StackExchange.ifUsing("editor", function () {
            StackExchange.using("externalEditor", function () {
            StackExchange.using("snippets", function () {
            StackExchange.snippets.init();
            });
            });
            }, "code-snippets");

            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "1"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });














             

            draft saved


            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53370544%2frxswift-error-cannot-invoke-drive-with-an-argument-list-of-type-drivervoid%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes








            up vote
            0
            down vote













            As you are getting Driver from closeButton.rx .tap.asDriver() then you don't need a separate Driver object and you can remove this variable var closeButtonDidTapObserver: Driver { get }.



            In drive(...) you need to pass the UI element you want to bind with the button.



            Example,



            closeButton.rx.tap.asDriver()
            .drive(self.label.rx.text)
            .disposed(by: disposeBag)


            Or you can subscribe as below,



            closeButton.rx.tap.asDriver()
            .drive(onNext: { [weak self] in
            // Update ui element here
            }).disposed(by: disposeBag)





            share|improve this answer



























              up vote
              0
              down vote













              As you are getting Driver from closeButton.rx .tap.asDriver() then you don't need a separate Driver object and you can remove this variable var closeButtonDidTapObserver: Driver { get }.



              In drive(...) you need to pass the UI element you want to bind with the button.



              Example,



              closeButton.rx.tap.asDriver()
              .drive(self.label.rx.text)
              .disposed(by: disposeBag)


              Or you can subscribe as below,



              closeButton.rx.tap.asDriver()
              .drive(onNext: { [weak self] in
              // Update ui element here
              }).disposed(by: disposeBag)





              share|improve this answer

























                up vote
                0
                down vote










                up vote
                0
                down vote









                As you are getting Driver from closeButton.rx .tap.asDriver() then you don't need a separate Driver object and you can remove this variable var closeButtonDidTapObserver: Driver { get }.



                In drive(...) you need to pass the UI element you want to bind with the button.



                Example,



                closeButton.rx.tap.asDriver()
                .drive(self.label.rx.text)
                .disposed(by: disposeBag)


                Or you can subscribe as below,



                closeButton.rx.tap.asDriver()
                .drive(onNext: { [weak self] in
                // Update ui element here
                }).disposed(by: disposeBag)





                share|improve this answer














                As you are getting Driver from closeButton.rx .tap.asDriver() then you don't need a separate Driver object and you can remove this variable var closeButtonDidTapObserver: Driver { get }.



                In drive(...) you need to pass the UI element you want to bind with the button.



                Example,



                closeButton.rx.tap.asDriver()
                .drive(self.label.rx.text)
                .disposed(by: disposeBag)


                Or you can subscribe as below,



                closeButton.rx.tap.asDriver()
                .drive(onNext: { [weak self] in
                // Update ui element here
                }).disposed(by: disposeBag)






                share|improve this answer














                share|improve this answer



                share|improve this answer








                edited 5 hours ago

























                answered 6 hours ago









                Kamran

                4,85711027




                4,85711027






























                     

                    draft saved


                    draft discarded



















































                     


                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53370544%2frxswift-error-cannot-invoke-drive-with-an-argument-list-of-type-drivervoid%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    Volksrepublik China

                    How to test boost logger output in unit testing?

                    Write to the output between two pipeline