// // RepeatTimeViewControllers.swift // FireBoltt // // Created by lemo on 2018/5/11. // Copyright © 2020年 ecell. All rights reserved. // import UIKit private enum Resuable { static let tableViewCell = ReusableCell(nibName: "CommonTableViewCell") } class RepeatTimeViewControllers: TableViewController { override func viewDidLoad() { super.viewDidLoad() } override func makeUI() { super.makeUI() let rightItem = UIBarButtonItem.baseBarButtonItem(normalImg: "", highImg: nil, title: MultiLanguageKey_FB.saveFB.localized, target: self, action: #selector(clickSave)) navigationItem.rightBarButtonItem = rightItem tableView.rowHeight = kScaleHeight(50) tableView.register(Resuable.tableViewCell) tableView.snp.makeConstraints { (make) in make.edges.equalToSuperview() } } override func bindViewModel() { guard let viewModel = viewModel as? RepeatViewModels else { return } let dataSource = RxTableViewSectionedReloadDataSource>.init(configureCell: { ( ds , tv, indexPath, model) in let cell: CommonTableViewCell = tv.dequeue(Resuable.tableViewCell, for: indexPath) cell.bindViewModel(model: model) cell.selectionStyle = .none return cell }) viewModel.dataVariable.asObservable() .bind(to: tableView.rx.items(dataSource: dataSource)) .disposed(by: rx.disposeBag) tableView.rx.itemSelected .subscribe(onNext: { (ind) in viewModel.updateDataSource(idx: ind.row) }) .disposed(by: rx.disposeBag) } @objc func clickSave() { guard let viewModel = viewModel as? RepeatViewModels else { return } viewModel.updateCycle.onNext(viewModel.cycleStr) navigator.pop(sender: self) } } extension RepeatTimeViewControllers { /// 所选星期的状态转为字符串 /// /// - Parameter status: 状态值 /// - Returns: 字符串 func selectedWeekdays(status: Int) -> String { let weekdays = ["周一", "周二", "周三", "周四", "周五", "周六", "周日"] var i = 0 var result = "" for weekday in weekdays { let res = status & ( 1 << i ) == 0 if !res { result.append(weekday) result.append(" ") } i += 1 } return result } func weekdaysToStatus(weekStr: String) -> Int { let weekdays = ["周一", "周二", "周三", "周四", "周五", "周六", "周日"] var status = 0 var i = 0 for weekday in weekdays { if weekStr.contains(weekday) { status = status | ( 1 << i ) }else { status = status | ( 0 << i ) } i += 1 } return status } }