mirror of
https://github.com/Finb/Bark.git
synced 2025-12-08 21:36:01 +00:00
79 lines
2.6 KiB
Swift
79 lines
2.6 KiB
Swift
//
|
|
// GroupTableViewCell.swift
|
|
// Bark
|
|
//
|
|
// Created by huangfeng on 2021/6/8.
|
|
// Copyright © 2021 Fin. All rights reserved.
|
|
//
|
|
|
|
import Material
|
|
import UIKit
|
|
|
|
class GroupTableViewCell: BaseTableViewCell<GroupCellViewModel> {
|
|
let nameLabel: UILabel = {
|
|
let label = UILabel()
|
|
label.fontSize = 14
|
|
label.textColor = BKColor.grey.darken4
|
|
return label
|
|
}()
|
|
|
|
let checkButton: BKButton = {
|
|
let btn = BKButton()
|
|
btn.setImage(UIImage(named: "baseline_radio_button_unchecked_black_24pt"), for: .normal)
|
|
btn.setImage(UIImage(named: "baseline_check_circle_outline_black_24pt"), for: .selected)
|
|
btn.tintColor = BKColor.grey.base
|
|
btn.isUserInteractionEnabled = false
|
|
return btn
|
|
}()
|
|
|
|
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
|
|
super.init(style: style, reuseIdentifier: reuseIdentifier)
|
|
self.selectionStyle = .none
|
|
self.backgroundColor = BKColor.background.secondary
|
|
|
|
self.contentView.addSubview(nameLabel)
|
|
self.contentView.addSubview(checkButton)
|
|
|
|
checkButton.snp.makeConstraints { make in
|
|
make.width.height.equalTo(24)
|
|
make.left.equalToSuperview().offset(15)
|
|
make.centerY.equalToSuperview()
|
|
}
|
|
nameLabel.snp.makeConstraints { make in
|
|
make.left.equalTo(checkButton.snp.right).offset(15)
|
|
make.top.equalToSuperview().offset(15)
|
|
make.bottom.equalToSuperview().offset(-15)
|
|
}
|
|
let tap = UITapGestureRecognizer()
|
|
self.contentView.addGestureRecognizer(tap)
|
|
tap.rx.event.subscribe(onNext: { [weak self] _ in
|
|
self?.viewModel?.checked.accept(!self!.checkButton.isSelected)
|
|
}).disposed(by: rx.disposeBag)
|
|
}
|
|
|
|
@available(*, unavailable)
|
|
required init?(coder aDecoder: NSCoder) {
|
|
fatalError("init(coder:) has not been implemented")
|
|
}
|
|
|
|
override func bindViewModel(model: GroupCellViewModel) {
|
|
super.bindViewModel(model: model)
|
|
|
|
model.name
|
|
.map { name in
|
|
name ?? NSLocalizedString("default")
|
|
}
|
|
.bind(to: nameLabel.rx.text)
|
|
.disposed(by: rx.reuseBag)
|
|
|
|
model.checked
|
|
.bind(to: self.checkButton.rx.isSelected)
|
|
.disposed(by: rx.reuseBag)
|
|
|
|
model.checked.subscribe(
|
|
onNext: { [weak self] checked in
|
|
self?.checkButton.tintColor = checked ? BKColor.lightBlue.darken3 : BKColor.grey.base
|
|
}).disposed(by: rx.reuseBag)
|
|
}
|
|
}
|