// // MineViewController.swift // FireBoltt // // Created by lemo. on 2020/3/7. // Copyright © 2020 Sheldon. All rights reserved. // import UIKit fileprivate enum Resuable { static let tableViewCell = ReusableCell(nibName: "CommonTableViewCell") } class MineViewController: TableViewController { lazy var headerView: MineHeaderView = { let view = MineHeaderView(frame: CGRect(x: 0, y: 0, width: kScreenW, height: kScaleWidth(180)+10)) view.bgView.addTarget(self, action: #selector(pusInfo), for: .touchUpInside) return view }() override func viewDidLoad() { super.viewDidLoad() } override func makeUI() { super.makeUI() isTitleCenter = true navigationTitle = MultiLanguageKey_FB.mineFB.localized if #available(iOS 13.0, *) { tableViewStyle = .insetGrouped } else { // Fallback on earlier versions tableViewStyle = .grouped } tableView.backgroundColor = kHexColor(0xFAFAFA) tableView.rowHeight = kScaleWidth(52) tableView.separatorStyle = UITableViewCell.SeparatorStyle.singleLine tableView.register(Resuable.tableViewCell) var top = kBatteryH; if #available(iOS 15.0, *) { top+=22 } tableView.contentInset = UIEdgeInsets(top: -top, left: 0, bottom: 0, right: 0) view.bringSubviewToFront(tableView) // 头视图 tableView.tableHeaderView = headerView tableView.isScrollEnabled = false // headerView.rx.tap // .subscribe(onNext: { [weak self] _ in // guard let `self` = self else { return } // let vm = UserInfoViewModel() // self.navigator.show(segue: .userInfo(viewModel: vm), sender: self) // }) // .disposed(by: rx.disposeBag) layoutUI() } @objc func pusInfo(){ let vm = UserInfoViewModel() self.navigator.show(segue: .userInfo(viewModel: vm), sender: self) } func layoutUI() { tableView.snp.makeConstraints { (make) in make.edges.equalToSuperview() } } override func bindViewModel() { super.bindViewModel() guard let viewModel = viewModel as? MineViewModel else { return } let dataSource = RxTableViewSectionedReloadDataSource >(configureCell: { (dataSource, tv, indexPath, element) in let cell = tv.dequeue(Resuable.tableViewCell, for: indexPath) cell.bindViewModel(model: element) return cell }) viewModel.relay .bind(to: tableView.rx.items(dataSource: dataSource)) .disposed(by: rx.disposeBag) viewModel.userIcon .bind(to: headerView.userIconImg.rx.image()) .disposed(by: rx.disposeBag) viewModel.userNickname .bind(to: headerView.userNameLabel.rx.text) .disposed(by: rx.disposeBag) tableView.rx.modelSelected(TableViewCellModel.self) .subscribe(onNext: { [weak self] (cellVM) in guard let type = cellVM.mineSetType else { return } switch type { case .unitSet: self?.navigator.show(segue: .unitSet, sender: self) case .targetSet: let vm = TargetVM() self?.navigator.show(segue: .target(viewModel: vm), sender: self) case .about: self?.navigator.show(segue: .about, sender: self) case .privacy: print("隐私政策") let vc = commWebViewController() vc.view.backgroundColor = UIColor.white; vc.navTitle = MultiLanguageKey_FB.privacyFB.localized vc.url = "http://wx.ecellsz.com/mp/iosPrivacy.html" vc.hidesBottomBarWhenPushed = true; self?.navigationController!.pushViewController(vc, animated: true) case .service: print("用户协议") let vc = commWebViewController() vc.view.backgroundColor = UIColor.white; vc.navTitle = MultiLanguageKey_FB.serviceFB.localized vc.url = "http://wx.ecellsz.com/mp/appAgreement.html" vc.hidesBottomBarWhenPushed = true; self?.navigationController!.pushViewController(vc, animated: true) case .disclaimerFB: print("免责声明") let vc = commWebViewController() vc.view.backgroundColor = UIColor.white; vc.navTitle = MultiLanguageKey_FB.disclaimerFB.localized vc.url = MultiLanguageKey_FB.disclaimerFB.localized vc.hidesBottomBarWhenPushed = true; self?.navigationController!.pushViewController(vc, animated: true) } }) .disposed(by: rx.disposeBag) } }