// // TelephoneBookViewControllers.swift // FireBoltt // // Created by ecell on 2022/8/25. // Copyright © 2022 Sheldon. All rights reserved. // import UIKit import Contacts class TelephoneBookViewControllers: ViewController { var items:[String] = [] var seleteArr:NSMutableArray = [] var tableView:UITableView? override func loadView() { super.loadView() } 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 } override func viewDidLoad() { super.viewDidLoad() self.monitor() //创建表视图 self.tableView = UITableView(frame: self.view.frame, style:UITableView.Style.plain) self.tableView!.delegate = self self.tableView!.dataSource = self self.tableView!.register(UITableViewCell.self, forCellReuseIdentifier: "SwiftCell") //设置允许单元格多选 self.tableView!.allowsMultipleSelection = true self.view.addSubview(self.tableView!) items = BluetoothToolFireBoltt.contactPeploe() as! [String] //print(items as Any) self.tableView!.reloadData() } @objc func clickSave() { if (self.seleteArr.count != 0) { SVProgressHUD.show() BluetoothService.shared.syncContactWithBleCmdType(seleteArr: self.seleteArr) } else { SVProgressHUD.showError(withStatus: MultiLanguageKey_FB.selectNoPhoneFB.localized) } } func monitor() { /// 指令成功失败监听 Observable.of(kNotificationCenter.rx.notification(Notification.Name(rawValue: CmdSuccess)), kNotificationCenter.rx.notification(Notification.Name(rawValue: CmdTimeout))) .merge() .subscribe(onNext: { [weak self] notification in guard let `self` = self, let cmd = notification.object as? BleCMD_FireBoltt else { return } let isSuccess = notification.name.rawValue == CmdSuccess switch cmd { case .syncContact: if isSuccess { SVProgressHUD.showSuccess(withStatus: MultiLanguageKey_FB.syncDataSucceedFB.localized) self.navigationController?.popViewController(animated: true) return } SVProgressHUD.showSuccess(withStatus: MultiLanguageKey_FB.setFailFB.localized) default: break } }) .disposed(by: rx.disposeBag) } } extension TelephoneBookViewControllers: UITableViewDelegate { // 选中 func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { let cell = self.tableView?.cellForRow(at: indexPath) cell?.accessoryType = .checkmark self.seleteArr.addObjects(from: [self.items[indexPath.row]]) NSLog("选中%@",self.seleteArr) } // 取消选中 func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) { let cell = self.tableView?.cellForRow(at: indexPath) cell?.accessoryType = .none self.seleteArr.removeObjects(in: [self.items[indexPath.row]]) NSLog("取消%@",self.seleteArr) } } extension TelephoneBookViewControllers: UITableViewDataSource { func numberOfSections(in tableView: UITableView) -> Int { return 1 } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return items.count } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let identify:String = "SwiftCell" let cell = tableView.dequeueReusableCell(withIdentifier: identify, for: indexPath) cell.selectionStyle = UITableViewCell.SelectionStyle.none cell.textLabel?.numberOfLines = 0; cell.textLabel?.text = self.items[indexPath.row] // 标记对勾的颜色 // cell.tintColor = UIColor.brown if let _ = tableView.indexPathsForSelectedRows?.firstIndex(of: indexPath){ cell.accessoryType = .checkmark } else { cell.accessoryType = .none } return cell } }