GroupTableViewCell.swift 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. //
  2. // GroupTableViewCell.swift
  3. // Bark
  4. //
  5. // Created by huangfeng on 2021/6/8.
  6. // Copyright © 2021 Fin. All rights reserved.
  7. //
  8. import Material
  9. import UIKit
  10. class GroupTableViewCell: BaseTableViewCell<GroupCellViewModel> {
  11. let nameLabel: UILabel = {
  12. let label = UILabel()
  13. label.fontSize = 14
  14. label.textColor = BKColor.grey.darken4
  15. return label
  16. }()
  17. let checkButton: BKButton = {
  18. let btn = BKButton()
  19. btn.setImage(UIImage(named: "baseline_radio_button_unchecked_black_24pt"), for: .normal)
  20. btn.setImage(UIImage(named: "baseline_check_circle_outline_black_24pt"), for: .selected)
  21. btn.tintColor = BKColor.grey.base
  22. btn.isUserInteractionEnabled = false
  23. return btn
  24. }()
  25. override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
  26. super.init(style: style, reuseIdentifier: reuseIdentifier)
  27. self.selectionStyle = .none
  28. self.backgroundColor = BKColor.background.secondary
  29. self.contentView.addSubview(nameLabel)
  30. self.contentView.addSubview(checkButton)
  31. checkButton.snp.makeConstraints { make in
  32. make.width.height.equalTo(24)
  33. make.left.equalToSuperview().offset(15)
  34. make.centerY.equalToSuperview()
  35. }
  36. nameLabel.snp.makeConstraints { make in
  37. make.left.equalTo(checkButton.snp.right).offset(15)
  38. make.top.equalToSuperview().offset(15)
  39. make.bottom.equalToSuperview().offset(-15)
  40. }
  41. let tap = UITapGestureRecognizer()
  42. self.contentView.addGestureRecognizer(tap)
  43. tap.rx.event.subscribe(onNext: { [weak self] _ in
  44. self?.viewModel?.checked.accept(!self!.checkButton.isSelected)
  45. }).disposed(by: rx.disposeBag)
  46. }
  47. @available(*, unavailable)
  48. required init?(coder aDecoder: NSCoder) {
  49. fatalError("init(coder:) has not been implemented")
  50. }
  51. override func bindViewModel(model: GroupCellViewModel) {
  52. super.bindViewModel(model: model)
  53. model.name
  54. .map { name in
  55. name ?? NSLocalizedString("default")
  56. }
  57. .bind(to: nameLabel.rx.text)
  58. .disposed(by: rx.reuseBag)
  59. model.checked
  60. .bind(to: self.checkButton.rx.isSelected)
  61. .disposed(by: rx.reuseBag)
  62. model.checked.subscribe(
  63. onNext: { [weak self] checked in
  64. self?.checkButton.tintColor = checked ? BKColor.lightBlue.darken3 : BKColor.grey.base
  65. }).disposed(by: rx.reuseBag)
  66. }
  67. }