// // IHPanelSettingView.swift // Inhealth // // Created by weclouds on 2020/7/25. // Copyright © 2020 weclouds. All rights reserved. // import UIKit import PKHUD protocol PanelSettingViewDelegate : NSObjectProtocol{ func setPanelMode(dataList : [[String : String]]) } class IHPanelSettingView: UIView { //var dataSource = [["Button 1" : "Attend class mode"],["Button 2" : "Finish class mode"],["Button 3" : "Projection mode"],["Button 4" : "Full-on mode"], ["Button 5" : "Full-off mode"],["Button 6" : "Self-study mode"]] var tableView : UITableView? weak var delegate : PanelSettingViewDelegate? var dataSource = [[String : String]]() //(1 全开模式,2 全关模式,3 投影模式,4 自习模式,5 板书模式,7 上课模式,8 下课模式,9 午休模式 //上课模式 下课模式 投影模式 全开模式 全关模式 自习模式 var panelMode : PanelModel?{ didSet{ let data1 = setModeData(indexBtn: 1, keyValue: (panelMode?.key1)!) let data2 = setModeData(indexBtn: 2, keyValue: (panelMode?.key2)!) let data3 = setModeData(indexBtn: 3, keyValue: (panelMode?.key3)!) let data4 = setModeData(indexBtn: 4, keyValue: (panelMode?.key4)!) let data5 = setModeData(indexBtn: 5, keyValue: (panelMode?.key5)!) let data6 = setModeData(indexBtn: 6, keyValue: (panelMode?.key6)!) dataSource.append(data1) dataSource.append(data2) dataSource.append(data3) dataSource.append(data4) dataSource.append(data5) dataSource.append(data6) //更新数据 self.tableView?.reloadData() } } private func setModeData(indexBtn : Int, keyValue : String) ->[String : String]{ //["Full-on mode","Full-off mode" ,"Attend class mode","Finish class mode","Noon break mode" ,"Self-study mode","Blackboard mode" ,"Projection mode"] // 1 全开模式,2 全关模式,3 投影模式,4 自习模式,5 板书模式,7 上课模式,8 下课模式,9 午休模式) var key = "" if "1" == keyValue { key = "全开模式" }else if "2" == keyValue { key = "全关模式" }else if "3" == keyValue { key = "投影模式" }else if "4" == keyValue{ key = "自习模式" }else if "5" == keyValue{ key = "板书模式" }else if "7" == keyValue { key = "上课模式" }else if "8" == keyValue { key = "下课模式" }else if "9" == keyValue{ key = "午休模式" } return ["按键 \(indexBtn)" : key] } override init(frame: CGRect) { super.init(frame: frame) self.createUI() NotificationCenter.default.addObserver(self, selector: #selector(setPanelMode), name: NSNotification.Name(KNotifitionPanel), object: nil) } @objc func setPanelMode(noti : NSNotification){ let dic = noti.userInfo let indexPath = dic?["indexPath"] as! IndexPath let choseValue = dic?["choseValue"] as! String var choseDic = self.dataSource[indexPath.row] choseDic.updateValue(choseValue, forKey: (choseDic.keys.first)!) //更新数组 self.dataSource[indexPath.row] = choseDic //更新tableview self.tableView?.reloadRows(at: [indexPath], with: .automatic) } deinit { NotificationCenter.default.removeObserver(self) } required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } func createUI() { if KNavBarHeight == 64 { self.tableView = UITableView.init(frame: CGRect.init(x: 0, y: 0, width: KSCREENWIDTH, height: KSCREENHEIGHT - KNavBarHeight - 70), style: .plain) }else { self.tableView = UITableView.init(frame: CGRect.init(x: 0, y: 0, width: KSCREENWIDTH, height: KSCREENHEIGHT - KNavBarHeight - 34 - 70), style: .plain) } tableView?.dataSource = self tableView?.delegate = self tableView?.separatorStyle = .none tableView?.rowHeight = 120.0 //self.tableView = tableView self.addSubview(tableView!) let between : CGFloat = 30.0 let saveBtn = UIButton.init(frame: CGRect.init(x: between, y: tableView!.size.height + 20.0, width: KSCREENWIDTH - between * 2, height: 40)) saveBtn.setTitle("保存", for: .normal) saveBtn.backgroundColor = UIColor.init(hexString: "#573F95") saveBtn.addTarget(self, action: #selector(saveValueBtn), for: .touchUpInside) saveBtn.layer.cornerRadius = 5 saveBtn.layer.masksToBounds = true self.addSubview(saveBtn) } } extension IHPanelSettingView { @objc func saveValueBtn(sender : UIButton){ // HUD.flash(.label("加载中..."), delay: 8) HUD.flash(.progress, delay: 8.0) self.delegate?.setPanelMode(dataList: self.dataSource) } } extension IHPanelSettingView : UITableViewDelegate,UITableViewDataSource{ func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return self.dataSource.count } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = IHPanelSettingCell.panelCellWithTableViewAndIndexPath(tableView: tableView, indexPath: indexPath) cell.indexPath = indexPath cell.dataSource = self.dataSource[indexPath.row] return cell } }