我创建了一个数组pisteet(),用于存储九个UISwitch的状态。对于off 0和for on 1.数组pisteet()是全局的,所以当我弹出开关所在的页面时,值会存储在数组中,但在重新进入时,开关都被设置为默认值为OFF 。所以我遇到了visual switch和pisteet()array -value不匹配的情况。
所以我将setSwitchesOnViewLoad()函数添加到我的viewDidLoad override func:
func setSwitchesOnViewLoad() {
if pisteet[0] == 1 {
swHTA.setOn(true, animated: false)
}
if pisteet[1] == 1 {
swMunu.setOn(true, animated: false)
}
if pisteet[2] == 1 {
swMaksa.setOn(true, animated: false)
}
if pisteet[3] == 1 {
swStroke.setOn(true, animated: false)
}
if pisteet[4] == 1 {
swVuoto.setOn(true, animated: false)
}
if pisteet[5] == 1 {
swINR.setOn(true, animated: false)
}
if pisteet[6] == 1 {
swAge.setOn(true, animated: false)
}
if pisteet[7] == 1 {
swDrug.setOn(true, animated: false)
}
if pisteet[8] == 1 {
swAlco.setOn(true, animated: false)
}
}
这样可行,但如果我有100个开关,那么像这样工作会非常麻烦。
我研究了标签,让每个UISwitch都是1 ... 9的唯一标签,然后遍历数组并使用索引和值来设置每个UISwitch状态。没找到我能用过的东西。
有什么想法吗?
答案 0 :(得分:0)
也将您的开关放在一个数组中。如果您在InterfaceBuilder中设计了viewController,请在OutletCollection
中按住Ctrl键拖动它们,这样您就可以:
class MyViewController: UIViewController {
@IBOutlet var switches: [UISwitch]!
override func viewDidLoad() {
super.viewDidLoad()
for var i = 0; i < pisteet.count; ++i {
self.switches[i].on = pisteet[i] == 1
}
}
}