私が直面している最後の問題を解決するためにフィードバックや洞察をいただければ幸いです。私のコードはかさばる。Xcodeスウィフトトグルでラベルを1つ増やし、トグルの値を保存
私は4つのトグルを持っています。各スイッチをオンにすると、ラベルが1ずつ増加します。私は、トグル位置を保存して、アプリケーションの電源を切って戻したときにラベルを付けることもできました。しかし、私がアプリをオフにしてからオンにしてトグルを切り替えると、ラベルは1に戻ります。
コードの記述方法は他の3つのトグル= 0とみなし、ラベルは1と答えています。
各フレームを実行して、どのトグルがオン/オフであるかを常に確認してからその値をラベルに戻す方法はありますか?アプリのオン/オフ。ここに写真と私のコードがあります。
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var label: UILabel!
@IBOutlet weak var switch1: UISwitch!
@IBOutlet weak var switch2: UISwitch!
@IBOutlet weak var switch3: UISwitch!
@IBOutlet weak var switch4: UISwitch!
var v1 = 0
var v2 = 0
var v3 = 0
var v4 = 0
var s1 = "s1"
var s2 = "s2"
var s3 = "s3"
var s4 = "s4"
var l1 = "l1"
var defaults = UserDefaults.standard
@IBAction func switch1On(_ sender: UISwitch) {
if switch1.isOn {
v1 = 1
label.text = String(v1 + v2 + v3 + v4)
}
else {
v1 = 0
label.text = String(v1 + v2 + v3 + v4)
}
}
@IBAction func switch2On(_ sender: UISwitch) {
if switch2.isOn {
v2 = 1
label.text = String(v1 + v2 + v3 + v4)
}
else {
v2 = 0
label.text = String(v1 + v2 + v3 + v4)
}
}
@IBAction func switch3On(_ sender: UISwitch) {
if switch3.isOn {
v3 = 1
label.text = String(v1 + v2 + v3 + v4)
}
else {
v3 = 0
label.text = String(v1 + v2 + v3 + v4)
}
}
@IBAction func switch4On(_ sender: UISwitch) {
if switch4.isOn {
v4 = 1
label.text = String(v1 + v2 + v3 + v4)
}
else {
v4 = 0
label.text = String(v1 + v2 + v3 + v4)
}
}
@IBAction func switch1Changed(_ sender: UISwitch) {
defaults.set(sender.isOn, forKey: s1)
defaults.set(label.text, forKey: l1)
}
@IBAction func switch2Changed(_ sender: UISwitch) {
defaults.set(sender.isOn, forKey: s2)
defaults.set(label.text, forKey: l1)
}
@IBAction func switch3Changed(_ sender: UISwitch) {
defaults.set(sender.isOn, forKey: s3)
defaults.set(label.text, forKey: l1)
}
@IBAction func switch4Changed(_ sender: UISwitch) {
defaults.set(sender.isOn, forKey: s4)
defaults.set(label.text, forKey: l1)
}
override func viewDidLoad() {
super.viewDidLoad()
if switch1.isOn {
v1 = 1
}
if switch2.isOn {
v2 = 1
}
if switch3.isOn {
v3 = 1
}
if switch4.isOn {
v4 = 1
}
label.text = String(v1 + v2 + v3 + v4)
if let s1change = defaults.value(forKey: s1) {
switch1.isOn = s1change as! Bool
}
if let s2change = defaults.value(forKey: s2) {
switch2.isOn = s2change as! Bool
}
if let s3change = defaults.value(forKey: s3) {
switch3.isOn = s3change as! Bool
}
if let s4change = defaults.value(forKey: s4) {
switch4.isOn = s4change as! Bool
}
if let labelChange = defaults.value(forKey: l1) {
label.text = labelChange as? String
}
}
https://i.stack.imgur.com/co6zj.png https://i.stack.imgur.com/dJtcx.png