When playing the timer, the values changed via UIStepper and saved in another controller begin with the default value of the variable, and after the first scrolling the timer starts to be displayed with the desired changed values
1 controller:
var duretionExersise = 30.0 // дефолтное значение переменной вынесено за класс контроллера @IBOutlet weak var secondsStepper: UIStepper! @IBOutlet weak var secondsLabel: UILabel! override func viewDidLoad() { super.viewDidLoad() if NSUserDefaults.standardUserDefaults().objectForKey("duretionExersise") != nil { duretionExersise = NSUserDefaults.standardUserDefaults().objectForKey("duretionExersise") as! Double } secondsStepper.value = duretionExersise secondsStepper.minimumValue = 1 secondsStepper.maximumValue = 60 } @IBAction func secondsStepper(sender: UIStepper) { NSUserDefaults.standardUserDefaults().setObject(Int(sender.value), forKey: "duretionExersise") NSUserDefaults.standardUserDefaults().synchronize() secondsLabel.text = "\(Int(sender.value).description) seconds" } 2 controller
override func viewDidLoad() { super.viewDidLoad() if NSUserDefaults.standardUserDefaults().objectForKey("duretionExersise") != nil { duretionExersise = NSUserDefaults.standardUserDefaults().objectForKey("duretionExersise") as! Double } //Есть лэйбл в нем отображаем начальное значение таймера timerLabel.text = "\(Int(duretionExersise))" } var timer = NSTimer() var exersiseTime = Int(duretionExersise) var timerRunning = false var i = 0 func Counting(){ exersiseTime -= 1 timerLabelChange.text = "\(Int(exersiseTime))" if exersiseTime == -1 { i += 1 exersiseTime = Int(duretionExersise) timerLabelChange.text = "\(Int(exersiseTime))" } @IBAction func closeButton(sender: UIButton) { timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("Counting"), userInfo: nil, repeats: true) timerRunning = true }
NSUserDefaultsyou need to do the following:NSUserDefaults.standardUserDefaults().synchronize()- Vitali Eller