gpt4 book ai didi

ios - 订阅位于 UITableViewDataSource 内的 UITableViewCell 中的 UIButton.rx.tap

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:52:54 27 4
gpt4 key购买 nike

假设我在 UITableViewCell 中有一个 UIButton。从 UITableView 中取出单元格后,我想订阅 UIButton.rx.tap。问题是,如果我的 UITableViewCell 多次出队,订阅将保留。目前我通过在我的 UITableViewCell 中分配一个 Disposable 属性来解决这个问题,在创建订阅时设置它,然后调用 Disposable.dispose()UITableViewCell.prepareForReuse() 上,但据我所知,以一种需要您调用 Disposable.dispose() 的方式实现功能意味着您做错了什么。

有没有更好的方法在不重新分配 UIButton 的情况下实现订阅的唯一性?

最佳答案

另一个解决方案(不需要额外的库或调用 Disposable.dispose())是在单元格中有一个 DisposeBag 并在prepareForReuse,如本 GitHub issue 中所建议:

//in the cell 

private(set) var disposeBag = DisposeBag()

override func prepareForReuse() {
super.prepareForReuse()
disposeBag = DisposeBag()
}


//in the data source
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! DiaryItemCell

cell.commentButton.rx_tap
.subscribeNext{

}.addDisposableTo(cell.disposeBag)

return cell

如果您的单元格中有更多按钮(或您想要订阅的其他 Observable),它也会起作用。您不必在单元格中为它们中的每一个创建一个新的 Disposable

关于ios - 订阅位于 UITableViewDataSource 内的 UITableViewCell 中的 UIButton.rx.tap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41060254/

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