我有一个带有两个开关控件的应用程序,可以隐藏或显示某些文本字段,具体取决于其状态是否开启。
问题是第一个开关似乎控制了第二个。
如果第一个开关关闭,第二个开关也关闭。我希望他们彼此独立工作。 有什么建议吗?
谢谢你们
@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
}
}
答案 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
}
}
}
在没有看到所有代码的情况下,我能够回答的最好。