私は、アプリケーションの初期ロード時にスライダーがデフォルト値、たとえば5を持つようにスライダーを作成しようとしています。しかし、スライダーの値を10に変更するとVCを残して戻ってきて、値を10にしたいと思います。これを私のアプリに実装しようとしましたが、退室後にVCに戻るたびに、値はStoryBoardで値をリセットします。私のコードは0を1にすることでこれを一巡しますが(コードが最初に実行されるときは常にそうです)、私はそれがエレガントであるとは思わないし、より良い選択肢があります。私はviewDidAppearとviewDidLoadを正しく使用していないと思いますが、コードを改善する方法はあまりよく分かりません。以下は私の試みです:スウィフトスライダーの値をStoryBoardの値に戻す
var distanceMap: Int = Int()
import UIKit
class MapSettingsVC: UIViewController {
//IBOutlet for the slider
@IBOutlet weak var rangeSlider: UISlider!
// label for slider value
@IBOutlet weak var distanceLabel: UILabel!
//changes to slider value
@IBAction func distanceRange(_ sender: UISlider) {
distanceMap = Int(sender.value)
distanceLabel.text = String(distanceMap)
}
// iboutlet to go to another viewController
@IBAction func backButtonTapped(_ sender: AnyObject) {
self.performSegue(withIdentifier: "mapSettingsGoBack", sender: self)
}
override func viewDidAppear(_ animated: Bool) {
rangeSlider.value = Float(distanceMap)
distanceLabel.text = String(Int(rangeSlider.value))
// I have initialized the label to be 0, so this will be FIRST value when the VC is loaded, and the if statement always runs the first time
if distanceLabel.text == "0" {
rangeSlider.value = 1
distanceLabel.text = "1"
}
}
override func viewDidLoad() {
super.viewDidLoad()
}
理想的には私はスライダーでも「0」のオプションを持っているのは嫌だ、とあなたはビューコントローラを残している場合5.
ユーザーがアプリケーションを再起動し、ViewDidLoadが再びトリガーすると、スライダーの値はデフォルトで5に戻ります。同様のグローバル変数が格納され、UISliderのアプリケーション全体で使用する必要があります。 –