【问题标题】:UISwitch changes two values at a timeUISwitch 一次更改两个值
【发布时间】:2015-07-20 05:22:33
【问题描述】:

我有一个表格视图,其中的行数取决于用户创建的条目数。 假设用户创建了 2 个条目,因此我们有 2 行。

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

所有 UISwitch 状态在更改时都会更新字典字典。 例如以下

[0:[0:假,1:真],1:[0:假,1:假]]

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

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

场景:

所有的 UISwitches 都是 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]]

它会按预期关闭自己,但也会关闭所有其他(粗体)在第一步中为不同行 UIswitches 轻按的所有其他(粗体)。它似乎记住了上一步,但把行弄乱了。

代码:

//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
    }
}

【问题讨论】:

    标签: swift uiswitch programmatically-created


    【解决方案1】:

    解决了这个问题。

    必须添加一行代码来更新正确的 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
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2012-02-11
      • 1970-01-01
      • 2018-02-09
      • 1970-01-01
      • 2011-04-24
      • 2019-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多