美文网首页
UITableViewCell中的按钮订阅

UITableViewCell中的按钮订阅

作者: FallPine | 来源:发表于2018-09-14 16:58 被阅读9次
    • 关键是要重写cell的prepareForReuse方法,并在该方法中重新创建disposeBag

    注意 prepareForReuse() 方法里的 disposeBag = DisposeBag()
    每次 prepareForReuse() 方法执行时都会初始化一个新的 disposeBag。这是因为 cell 是可以复用的,这样当 cell 每次重用的时候,便会自动释放之前的 disposeBag,从而保证 cell 被重用的时候不会被多次订阅,避免错误发生

    import UIKit
    import RxSwift
     
    //单元格类
    class MyTableCell: UITableViewCell {
         
        var button:UIButton!
         
        var disposeBag = DisposeBag()
         
        //单元格重用时调用
        override func prepareForReuse() {
            super.prepareForReuse()
            disposeBag = DisposeBag()
        }
         
        //初始化
        override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
            super.init(style: style, reuseIdentifier: reuseIdentifier)
             
            //添加按钮
            button = UIButton(frame:CGRect(x:0, y:0, width:40, height:25))
            button.setTitle("点击", for:.normal) //普通状态下的文字
            button.backgroundColor = UIColor.orange
            button.layer.cornerRadius = 5
            button.titleLabel?.font = UIFont.systemFont(ofSize: 13)
            self.addSubview(button)
        }
         
        //布局
        override func layoutSubviews() {
            super.layoutSubviews()
            button.center = CGPoint(x: bounds.size.width - 35, y: bounds.midY)
        }
     
        required init?(coder aDecoder: NSCoder) {
            fatalError("init(coder:) has not been implemented")
        }
    }
    

    参考文章:Swift - RxSwift的使用详解62(订阅UITableViewCell里的按钮点击事件)

    相关文章

      网友评论

          本文标题:UITableViewCell中的按钮订阅

          本文链接:https://www.haomeiwen.com/subject/kloogftx.html