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.
102 lines
3.7 KiB
102 lines
3.7 KiB
1 year ago
|
//
|
||
1 year ago
|
// BindingViewControllers.swift
|
||
1 year ago
|
// 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")
|
||
|
}
|
||
|
|
||
1 year ago
|
class BindingViewControllers: TableViewController {
|
||
1 year ago
|
|
||
|
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() {
|
||
1 year ago
|
guard let viewModel = viewModel as? BindingViewModels else { return }
|
||
1 year ago
|
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() {
|
||
1 year ago
|
guard let viewModel = viewModel as? BindingViewModels else { return }
|
||
1 year ago
|
viewModel.startScan()
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|