passforios/pass/Views/SliderTableViewCell.swift
Yishi Lin 5a02cb726e Improve the password length slider
- the slider appears after clicking "generate"
- the slider goes away after clicking a non-password-related section
- generate new password if the slider value changes
2017-03-23 01:28:46 +08:00

63 lines
1.8 KiB
Swift

//
// SliderTableViewCell.swift
// pass
//
// Created by Yishi Lin on 8/3/17.
// Copyright © 2017 Yishi Lin. All rights reserved.
//
import UIKit
protocol PasswordSettingSliderTableViewCellDelegate {
func generateAndCopyPassword()
}
class SliderTableViewCell: ContentTableViewCell {
@IBOutlet weak var titleLabel: UILabel!
@IBOutlet weak var valueLabel: UILabel!
@IBOutlet weak var slider: UISlider!
var delegate: UITableViewController?
var roundedValue: Int {
get {
return Int(valueLabel.text!)!
}
}
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
@IBAction func handleSliderValueChange(_ sender: UISlider) {
let oldRoundedValue = self.roundedValue
let newRoundedValue = Int(sender.value)
// proceed only when the rounded value gets updated
guard newRoundedValue != oldRoundedValue else {
return;
}
sender.value = Float(newRoundedValue)
valueLabel.text = "\(newRoundedValue)"
if let delegate: PasswordSettingSliderTableViewCellDelegate = self.delegate as? PasswordSettingSliderTableViewCellDelegate {
delegate.generateAndCopyPassword()
}
}
func reset(title: String, minimumValue: Int, maximumValue: Int, defaultValue: Int) {
titleLabel.text = title
slider.minimumValue = Float(minimumValue)
slider.maximumValue = Float(maximumValue)
slider.value = Float(defaultValue)
valueLabel.text = String(defaultValue)
}
}