UISwitch一次更改两个值

时间:2015-05-09 09:34:17

标签: swift uiswitch programmatically-created

我有一个包含多个行的表视图,具体取决于用户创建的条目数。 让我们假设用户创建了2个条目,因此我们有2行。

现在,每次点击时,每个行都会创建一个子视图,其中另一个表包含2行和2个UISwitch (就像一棵树.2行,每行扩展到2个新行,每行都有一个UISwitch)

更改所有UISwitch时更新词典词典。 例如以下

[0:[0:false,1:true],1:[0:false,1:false]]

第0行 - >第一个开关:OFF,第二个:ON

第1行 - >第一个开关:OFF,第二个:OFF

场景:

所有UISwitch都是ON,[0:[0:true,1:true],1:[0:true,1:true]]

第0行的第一个UISwitch被关掉 - > [0:[0:false,1:true],1:[0:true,1:true]]

第一排的第二个UISwitch被关掉 - > [0:[0:false,1:true],1:[0: false ,1:false]]

它会按照预期关闭自己,但也会在第一步中针对不同的UI开关行关闭所有其他(粗体)。它似乎记得上一步但是弄乱了行。

代码:

//smallDictionary is a dictionary
//bigDictionary is a dictionary of dictionaries
// smallDictionary is appended to bigDictionary
// row is a variable updated everytime some row is tapped. 

@IBAction func switchChanged(sender: UISwitch) {
    if sender.on == true {
        smallDictionary[sender.tag]! = true  
        bigDictionary[row]! = globalswitchSaveDict

    }
    else  {
        smallDictionary[sender.tag]! = false
        bigDictionary[row]! = globalswitchSaveDict
    }
}

1 个答案:

答案 0 :(得分:0)

修正了问题。

必须添加代码才能更新正确的smallDict,如下所示:

@IBAction func switchChanged(sender: UISwitch) {
    smallDictionary = bigDictionary[row]!
    if sender.on == true {
        smallDictionary[sender.tag]! = true  
        bigDictionary[row]! = globalswitchSaveDict

    }
    else  {
        smallDictionary[sender.tag]! = false
        bigDictionary[row]! = globalswitchSaveDict
    }
}