gpt4 book ai didi

ios - 类型 'inout UIButton' 不符合协议(protocol) 'ReactiveCompatible'

转载 作者:搜寻专家 更新时间:2023-10-30 22:11:12 24 4
gpt4 key购买 nike

passWordInputView.inputTextField.rx.controlEvent(.editingDidEnd)
.bindTo(loginButton.rx.tap)
.disposed(by: disposeBag)

密码修改完成后登录

但出现错误:输入“inout UIButton”不符合协议(protocol)“ReactiveCompatible”

最佳答案

因为 RxSwift 包含 the following line ,当您为任何 NSObject 子类(UIKit 中的任何内容)收到此错误时,您可以非常确定是其他原因给编译器带来了麻烦。

extension NSObject: ReactiveCompatible { }

根据我的经验,当尝试错误地使用 rx 方法或运算符或者存在语法错误时,会发生此错误。

例如,当我尝试像这样合并两个流时,collectionView 出现了这个错误

Observable.merge(collectionView.rx.streamOne, streamTwo)

但是合并两个流的正确方法是

Observable.of(collectionView.rx.streamOne, streamTwo).merge()

(注意看起来静态 Observable.merge 是在 RxSwift 3.4 中添加的)


在你的情况下

您正在尝试绑定(bind)来自 inputTextField.rx.controlEvent(.editingDidEnd) 的流这是Observable<Void>loginButton.rx.tap这是一个Observable,而不是一个Observer。英语,button.rx.tap是用来观察的,而不是用来观察的。

你也可以这样做

inputTextField.rx.controlEvent(.editingDidEnd)
.subscribe(onNext: { [unowned self] in
self.inputTextField.userInteractionEnabled = false
self.doLogin()
}

您还可以合并来自按钮和文本字段的流,如上所述:)

关于ios - 类型 'inout UIButton' 不符合协议(protocol) 'ReactiveCompatible',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42871040/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com