使用数组中的值来设置多个UISwithces的状态

时间:2014-11-29 17:11:21

标签: arrays swift tags xcode6 uiswitch

我创建了一个数组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状态。没找到我能用过的东西。

有什么想法吗?

1 个答案:

答案 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
        }
    }
}