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.
101 lines
3.7 KiB
101 lines
3.7 KiB
// |
|
// BindingViewControllers.swift |
|
// Lookfit |
|
// |
|
// Created by lemo. on 2020/3/21. |
|
// Copyright © 2020 Sheldon. All rights reserved. |
|
// |
|
|
|
import UIKit |
|
|
|
fileprivate enum Resuable { |
|
static let tableViewCell = ReusableCell<CommonTableViewCell>(nibName: "CommonTableViewCell") |
|
} |
|
|
|
class BindingViewControllers: TableViewController { |
|
|
|
private lazy var nodataView: NoDataView = { |
|
let noDataView = NoDataView(frame: CGRect.zero, tip: MultiLanguageKey.searchFail.localized, type: .scanDevice) |
|
noDataView.isHidden = false |
|
noDataView.backgroundColor = kHexColor(0xffffff) |
|
return noDataView |
|
}() |
|
|
|
let rxDataSource = RxTableViewSectionedReloadDataSource<SectionModel<String, TableViewCellModel>>(configureCell: { (_ , tv, indexPath, model) -> UITableViewCell in |
|
let cell = tv.dequeue(Resuable.tableViewCell, for: indexPath) |
|
cell.bindViewModel(model: model) |
|
return cell |
|
}, titleForHeaderInSection: { ds, index in |
|
return ds.sectionModels[index].model |
|
}) |
|
|
|
override func viewDidLoad() { |
|
super.viewDidLoad() |
|
tableView.register(UITableViewCell.self, forCellReuseIdentifier: "deviceCell") |
|
} |
|
|
|
override func makeUI() { |
|
super.makeUI() |
|
let rightItem = UIBarButtonItem.baseBarButtonItem(normalImg: "", highImg: nil, title: MultiLanguageKey.scan.localized, target: self, action: #selector(clickScan)) |
|
navigationItem.rightBarButtonItem = rightItem |
|
view.addSubview(nodataView) |
|
nodataView.snp.makeConstraints { (make) in |
|
make.edges.equalToSuperview() |
|
} |
|
tableView.register(Resuable.tableViewCell) |
|
tableView.rowHeight = kScaleHeight(80) |
|
tableView.sectionHeaderHeight = kScaleHeight(42) |
|
tableView.snp.makeConstraints { (make) in |
|
make.edges.equalToSuperview() |
|
} |
|
} |
|
|
|
override func bindViewModel() { |
|
guard let viewModel = viewModel as? BindingViewModels else { return } |
|
viewModel.scanState |
|
.subscribe(onNext: { [weak self] (state) in |
|
if !state { |
|
SVProgressHUD.showError(withStatus: MultiLanguageKey.scanFailTip.localized) |
|
}else { |
|
self?.nodataView.isHidden = true |
|
} |
|
}) |
|
.disposed(by: rx.disposeBag) |
|
viewModel.connectState |
|
.subscribe(onNext: { [weak self] (state) in |
|
if !state { |
|
SVProgressHUD.showError(withStatus: MultiLanguageKey.connectFailTip.localized) |
|
return |
|
} |
|
// 连接成功 |
|
SVProgressHUD.dismiss() |
|
self?.navigator.pop(sender: self) |
|
}) |
|
.disposed(by: rx.disposeBag) |
|
viewModel.scanDevices |
|
.bind(to: tableView.rx.items(dataSource: rxDataSource)) |
|
.disposed(by: rx.disposeBag) |
|
viewModel.scanTimeout |
|
.subscribe(onNext: { [weak self] _ in |
|
self?.nodataView.isHidden = false |
|
}) |
|
.disposed(by: rx.disposeBag) |
|
tableView.rx.itemSelected |
|
.subscribe(onNext: { (indexPath) in |
|
if viewModel.scanBleModels.count > indexPath.row { |
|
SVProgressHUD.show(withStatus: MultiLanguageKey.coonecting.localized) |
|
let bleModel = viewModel.scanBleModels[indexPath.row] |
|
viewModel.connctDevice(bleModel: bleModel) |
|
} |
|
}) |
|
.disposed(by: rx.disposeBag) |
|
clickScan() |
|
} |
|
|
|
@objc func clickScan() { |
|
guard let viewModel = viewModel as? BindingViewModels else { return } |
|
viewModel.startScan() |
|
} |
|
|
|
} |
|
|
|
|