// // IHPanelSettingCellTableViewCell.swift // Inhealth // // Created by weclouds on 2020/7/25. // Copyright © 2020 weclouds. All rights reserved. // import UIKit let KNotifitionPanel = "KNotifitionPanel" class IHPanelSettingCell: UITableViewCell { private var labelTitle : UILabel? private var leftBrightnessBtn : UIButton? private var valueBackView : UIView? private var tableView : UITableView? var indexPath : IndexPath? private var choseBtnTag : Int = 0 private var choseValue : String = "" let model = ["全开模式","全关模式" ,"上课模式","下课模式","午休模式" ,"自习模式","板书模式" ,"投影模式"] //let model = ["Attend class mode","Finish class mode","Projection mode","Full-on mode","Full-off mode","Self-study mode"] var dataSource : [String: String]?{ didSet{ labelTitle?.text = dataSource?.keys.first! if let value = dataSource?.values.first { leftBrightnessBtn?.setTitle(value, for: .normal) } } } class func panelCellWithTableViewAndIndexPath(tableView : UITableView,indexPath : IndexPath) ->IHPanelSettingCell { let panelId = "panelId" var cell = tableView.dequeueReusableCell(withIdentifier: panelId) if cell == nil{ cell = IHPanelSettingCell.init(style: .default, reuseIdentifier: panelId, tableView: tableView, indexPath: indexPath) } return cell as! IHPanelSettingCell } init(style: UITableViewCell.CellStyle, reuseIdentifier: String?,tableView : UITableView,indexPath : IndexPath){ super.init(style: style, reuseIdentifier: reuseIdentifier) self.tableView = tableView //self.indexPath = indexPath createUI() } required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } } extension IHPanelSettingCell { func createUI(){ let backView = UIView.init(frame: CGRect.init(x: 0, y: 0, width: KSCREENWIDTH, height: 120)) backView.backgroundColor = .white //line let line = UIView.init(frame: CGRect.init(x: 0, y: 119, width: KSCREENWIDTH, height: 1)) line.backgroundColor = UIColor.init(red: 246/255.0, green: 245/255.0, blue: 248/255.0, alpha: 1.0) backView.addSubview(line) //上 let labelTitle = UILabel.init(frame: CGRect.init(x: 5, y: 0, width: KSCREENWIDTH, height: 40)) labelTitle.backgroundColor = UIColor.init(red: 246/255.0, green: 245/255.0, blue: 248/255.0, alpha: 1.0) backView.addSubview(labelTitle) self.labelTitle = labelTitle let h : CGFloat = 50 //下 let choseView = UIView.init(frame: CGRect.init(x: 0, y: 40, width: KSCREENWIDTH, height: h)) backView.addSubview(choseView) let leftBrightnessBtn = UIButton.init(frame: CGRect.init(x: 10, y: 0, width: KSCREENWIDTH - 10 * 2, height: h)) leftBrightnessBtn.setTitle("100%", for: .normal) leftBrightnessBtn.setTitleColor(.black, for: .normal) leftBrightnessBtn.setImage(UIImage.init(named: "xialaIcon"), for: .normal) leftBrightnessBtn.titleLabel?.font = UIFont.systemFont(ofSize: 15.0) leftBrightnessBtn.titleEdgeInsets = UIEdgeInsets.init(top: 0, left: -20, bottom: 0, right: 0) leftBrightnessBtn.semanticContentAttribute = .forceRightToLeft leftBrightnessBtn.addTarget(self, action: #selector(choseBrightness), for: .touchUpInside) leftBrightnessBtn.tag = 1 //leftView.addSubview(leftBrightnessBtn) choseView.addSubview(leftBrightnessBtn) self.leftBrightnessBtn = leftBrightnessBtn self.contentView.addSubview(backView) } } extension IHPanelSettingCell { @objc func choseBrightness(sender : UIButton){ self.choseBtnTag = sender.tag if valueBackView != nil { valueBackView?.removeFromSuperview() } createChosePicker(sender: sender) } func createChosePicker(sender : UIButton) { let point = sender.convert(sender.frame.origin, to: self.tableView) var valueBackView = UIView.init(frame: CGRect.init(x: (KSCREENWIDTH - point.x * 2) * 0.3 , y: point.y + 45, width: 200, height: 150)) //屏幕底下的显示 if (KSCREENHEIGHT - point.y) < 150 { //左侧的 valueBackView = UIView.init(frame: CGRect.init(x: (KSCREENWIDTH - point.x * 2) * 0.3, y: point.y - 35 - 150, width: 200, height: 150)) } valueBackView.backgroundColor = .lightGray self.tableView?.addSubview(valueBackView) self.valueBackView = valueBackView let valueTableView = UITableView.init(frame: CGRect.init(x: 1, y: 1, width: 198, height: 148)) valueTableView.dataSource = self valueTableView.delegate = self valueTableView.rowHeight = 40 valueBackView.addSubview(valueTableView) } } extension IHPanelSettingCell : UITableViewDataSource,UITableViewDelegate{ func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return self.model.count } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let panelModelId = "panelModelId" var cell = tableView.dequeueReusableCell(withIdentifier: panelModelId) if cell == nil { cell = UITableViewCell.init(style: .default, reuseIdentifier: panelModelId) } cell?.textLabel?.text = self.model[indexPath.row] return cell! } func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { if self.choseBtnTag == 1 { self.choseValue = model[indexPath.row] leftBrightnessBtn?.setTitle(choseValue, for: .normal) choseBtnTag = 0 valueBackView?.removeFromSuperview() NotificationCenter.default.post(name: NSNotification.Name(rawValue: KNotifitionPanel), object: nil, userInfo: ["indexPath" : self.indexPath!, "choseValue" : choseValue]) } } }