You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
2.9 KiB
93 lines
2.9 KiB
// |
|
// RepeatTimeViewController.swift |
|
// Lookfit |
|
// |
|
// Created by lemo on 2018/5/11. |
|
// Copyright © 2020年 ecell. All rights reserved. |
|
// |
|
|
|
import UIKit |
|
|
|
private enum Resuable { |
|
static let tableViewCell = ReusableCell<CommonTableViewCell>(nibName: "CommonTableViewCell") |
|
} |
|
|
|
class RepeatTimeViewController: TableViewController { |
|
|
|
override func viewDidLoad() { |
|
super.viewDidLoad() |
|
} |
|
|
|
override func makeUI() { |
|
super.makeUI() |
|
let rightItem = UIBarButtonItem.baseBarButtonItem(normalImg: "", highImg: nil, title: MultiLanguageKey.save.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? RepeatViewModel else { return } |
|
let dataSource = RxTableViewSectionedReloadDataSource<SectionModel<String, TableViewCellModel>>.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? RepeatViewModel else { return } |
|
viewModel.updateCycle.onNext(viewModel.cycleStr) |
|
navigator.pop(sender: self) |
|
} |
|
|
|
} |
|
|
|
extension RepeatTimeViewController { |
|
|
|
/// 所选星期的状态转为字符串 |
|
/// |
|
/// - 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 |
|
} |
|
}
|
|
|