Files
2021-11-16 15:08:55 +03:00

132 lines
3.3 KiB
Swift

import UIKit
import ContainerControllerSwift
// MARK: - Item
class ExampleSliderCellItem: TableAdapterItem {
init(height: CGFloat? = nil,
delegate: ExampleCellDelegate? = nil,
type: ExampleCell.Style = .default,
title: String? = nil,
value: Float? = nil,
maximumValue: Float? = nil,
minimumValue: Float? = nil,
callback: ((Int) -> Void)? = nil) {
let cellData = ExampleSliderCellData(type, title, value, maximumValue, minimumValue, height, delegate, callback)
super.init(cellClass: ExampleSliderCell.self, cellData: cellData)
}
}
// MARK: - Data
class ExampleSliderCellData: ExampleCellData {
// MARK: Properties
var value: Float
var maximumValue: Float
var minimumValue: Float
// MARK: Inits
init(_ type: ExampleCell.Style,
_ title: String? = nil,
_ value: Float? = nil,
_ maximumValue: Float? = nil,
_ minimumValue: Float? = nil,
_ cellHeight: CGFloat?,
_ delegate: ExampleCellDelegate?,
_ callback: ((Int) -> Void)?) {
let v = value ?? 1.0
self.value = v
self.maximumValue = maximumValue ?? v
self.minimumValue = minimumValue ?? 0.0
super.init(type, title, cellHeight, delegate, callback)
}
override public func cellHeight() -> CGFloat {
return 75.0
}
}
// MARK: - Cell
class ExampleSliderCell: ExampleCell {
// MARK: Properties
public var data: ExampleSliderCellData?
// MARK: Outlets
@IBOutlet override var selectedView: UIView? {
didSet { }
}
@IBOutlet private weak var slider: UISlider?
@IBOutlet private weak var titleLabel: UILabel?
@IBOutlet private weak var valueLabel: UILabel?
// MARK: Load
override func awakeFromNib() {
}
// MARK: Initialize
override func fill(data: TableAdapterCellData?) {
guard let data = data as? ExampleSliderCellData else { return }
self.data = data
titleLabel?.text = data.title
slider?.maximumValue = data.maximumValue
slider?.minimumValue = data.minimumValue
slider?.value = data.value
if let slider = slider {
let value = slider.value
valueLabel?.text = String(format: "%.1f", value)
data.value = value
}
}
@IBAction func sliderAction(_ sender: UISlider) {
valueLabel(slider: sender)
}
func valueLabel(slider: UISlider) {
guard let data = data else { return }
let value = slider.value
valueLabel?.text = String(format: "%.1f", value)
data.value = value
data.callback?(Int(value))
data.delegate?.exampleCell(self, type: data.type, value: CGFloat(value), endEditing: false)
}
@IBAction func touchUpInside(_ slider: UISlider) {
guard let data = data else { return }
let value = slider.value
valueLabel?.text = String(format: "%.1f", value)
data.value = value
data.callback?(Int(value))
data.delegate?.exampleCell(self, type: data.type, value: CGFloat(value), endEditing: true)
}
}