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
This commit is contained in:
Yishi Lin 2017-03-23 01:28:46 +08:00
parent e4e20b1d6f
commit 5a02cb726e
6 changed files with 75 additions and 25 deletions

View file

@ -9,15 +9,21 @@
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(slider.value)
return Int(valueLabel.text!)!
}
}
@ -33,9 +39,17 @@ class SliderTableViewCell: ContentTableViewCell {
}
@IBAction func handleSliderValueChange(_ sender: UISlider) {
let roundedValue = round(sender.value)
sender.value = roundedValue
valueLabel.text = "\(Int(roundedValue))"
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) {