私はポモドーロのタイマーアプリを作成していますが、調整のためのuisliderを含む責任を負うスライドアップメニュー(Settingsクラス)にユーザーデフォルトを実装しようとしています。タイマーの長さユーザーのデフォルトは私にとってはかなり正しいように見えますが、シミュレータでアプリケーションを終了して再度開くと値が保存されません。スライダとラベルの両方がデフォルト値に戻ります。私は何を間違えているのですか?私のユーザーのデフォルトではスライダーの値が保存されません - Swift 3
import Foundation
import UIKit
class Settings: UIView {
let defaults = UserDefaults.standard
let durationSlide = "durationSlide"
@IBOutlet weak var durationSlider: UISlider!
@IBOutlet weak var durationLabel: UILabel!
func viewDidLoad() {
if let durationSlide = defaults.value(forKey: durationSlide) {
durationSlider.value = durationSlide as! Float
durationSliderValueChanged(durationSlider)
}
}
@IBAction func durationSliderValueChanged(_ sender: UISlider) {
let currentValue = Int(sender.value)
durationLabel.text = "\(currentValue) minutes"
defaults.set(sender.value, forKey: durationSlide)
}
'defaults.float(forKey:durationSlide)'を使用します。 – Paulw11
'Settings'クラスは' UIView'としてではなく、 'UIView'として実装されています。したがって、そのメソッド 'viewDidLoad()'は自動的に呼び出されません。 'Settings'をインスタンス化するときに明示的に呼び出すか、' Settings'の初期化子を定義し、初期化子の内部から 'viewDidLoad()'(名前を変更する必要があります)を呼び出します。 – OOPer