//// SettingsViewController.swift// APIExample//// Created by 张乾泽 on 2020年7月26日.// Copyright © 2020 Agora Corp. All rights reserved.//import Foundationimport UIKitprotocol SettingsViewControllerDelegate: AnyObject {func didChangeValue(key:String, value: AnyObject)}class SettingsBaseCell : UITableViewCell{var configs:SettingsBaseParam?weak var delegate:SettingsViewControllerDelegate?func configure(configs:SettingsBaseParam){self.configs = configs}}class SettingsBaseParam: NSObject{var key:Stringvar label:Stringvar type:Stringinit(key:String, label:String, type:String) {self.key = keyself.label = labelself.type = type}}class SettingsSliderCell : SettingsBaseCell{@IBOutlet weak var settingLabel: AGLabel!@IBOutlet weak var settingSlider: UISlider!@IBOutlet weak var settingValue: AGLabel!@IBAction func onSliderValueChanged(sender:UISlider){let val = (sender.value*100).rounded()/100settingValue.text = "\(val)"guard let configs = self.configs as? SettingsSliderParam else {return}delegate?.didChangeValue(key: configs.key, value: val as AnyObject)}override func configure(configs: SettingsBaseParam) {super.configure(configs: configs)guard let param = configs as? SettingsSliderParam else {return}settingLabel.text = param.labelsettingSlider.value = param.valuesettingSlider.minimumValue = param.minimumValuesettingSlider.maximumValue = param.maximumValuesettingValue.text = "\(settingSlider.value)"}}class SettingsSliderParam: SettingsBaseParam {var value:Floatvar minimumValue:Floatvar maximumValue:Floatinit(key:String, label:String, value:Float, minimumValue:Float, maximumValue:Float) {self.value = valueself.minimumValue = minimumValueself.maximumValue = maximumValuesuper.init(key: key, label: label, type: "SliderCell")}}class SettingsViewController : UITableViewController{var sections:[[SettingsBaseParam]] = []var sectionNames:[String] = []weak var settingsDelegate:SettingsViewControllerDelegate?override func numberOfSections(in tableView: UITableView) -> Int {return sections.count}override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {let params = sections[section]return params.count}override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {let param = sections[indexPath.section][indexPath.row]guard let cell = tableView.dequeueReusableCell(withIdentifier: param.type, for: indexPath) as? SettingsBaseCell else {return UITableViewCell()}cell.delegate = settingsDelegatecell.configure(configs: param)return cell}override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {return sectionNames[section]}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。