Я создаю приложение таймера pomodoro, и в настоящее время я пытаюсь реализовать пользовательские значения по умолчанию в слайд-меню (класс Settings), который отвечает за содержание uisliders для настройки длина таймера. По умолчанию пользовательский интерфейс выглядит корректно для меня, но всякий раз, когда я закрываю приложение в симуляторе и снова открываю его, значение не сохраняется? Ползунок и метка возвращаются к значениям по умолчанию. Что я делаю не так?Мои настройки по умолчанию не сохраняют значение моего слайдера - 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', а не 'UIViewController'. Таким образом, его метод 'viewDidLoad()' не вызывается автоматически. Вызовите его явно, когда вы создаете свои «Настройки» или определяете инициализаторы «Настройки» и вызываете 'viewDidLoad()' (имя должно быть изменено ...) изнутри инициализаторов. – OOPer