切换控件切换为隐藏

时间:2018-04-11 13:12:47

标签: swift xcode uiswitch

我有一个带有两个开关控件的应用程序,可以隐藏或显示某些文本字段,具体取决于其状态是否开启。

问题是第一个开关似乎控制了第二个。

如果第一个开关关闭,第二个开关也关闭。我希望他们彼此独立工作。 有什么建议吗?

谢谢你们

@IBAction func switchP(_ sender: UISwitch) {
    if (sender.isOn == true) {
        textFieldP.isHidden = false
    } else {
        textFieldP.isHidden = true
    }
}

@IBAction func switchT(_ sender: UISwitch) {
    if (sender.isOn == true) {
        textFieldT.isHidden = false
    } else {
        textFieldT.isHidden = true
    }
}

2 个答案:

答案 0 :(得分:1)

首先,替换

if (sender.isOn == true) {
    textFieldP.isHidden = false
} else {
    textFieldP.isHidden = true
}

用简单的单行:

textFieldP.isHidden = !sender.isOn

其次,使用Connections Inspector(右侧面板,圆圈中的箭头)并确保您的引用插座不会在同一IBAction下混合或复制。

答案 1 :(得分:0)

除了使用.isHidden = true语句指定if/else之外,您应该使用相反的属性引用,这是一种更好的方法。

@IBAction var switchP: [UIView] {
didSet {
    textFieldP.forEach {
      $0.isHidden = true
      }
   }
}

并根据点击进行更改:

@IBAction func switchP(_ sender: UISwitch) {
    UIView.animate(withDuration: 0.2) {
        self.switchP.forEach {
            $0.isHidden = !$0.isHidden
        }
    }
}

在没有看到所有代码的情况下,我能够回答的最好。