RxSwift UITableViewCell上に配置したボタンの動作
3823 ワード
UITableView上に配置したボタンの動作がおかしい場合
反応しない、二重に処理が走ってしまうなど
disposedするDisposeBagオブジェクトをセル内で生成したものを利用する
大抵これで解決します。
disposeBagオブジェクトはセルの再利用のたびに新しく生成する必要があります。
セル側の例
class MyTableViewCell: UITableViewCell {
@IBOutlet weak var replyButton: UIButton!
var disposeBag = DisposeBag()
override func prepareForReuse() {
super.prepareForReuse()
self.disposeBag = DisposeBag() // ここで毎回生成
}
ビューコントローラー側
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView .dequeueReusableCell(withIdentifier: String(describing: MyTableViewCell.self), for: indexPath) as! MyTableViewCell
cell.talkButton.rx.tap.asDriver().drive(onNext: { [weak self] _ in
// タップ時の処理
}).disposed(by: cell.disposeBag) // セルで生成したDisposeBagオブジェクト
return cell
}
Author And Source
この問題について(RxSwift UITableViewCell上に配置したボタンの動作), 我々は、より多くの情報をここで見つけました https://qiita.com/katafuchix/items/5909fa2d38b5f5455df1著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .