Swift:用相同的标签点击一个按钮时更改UISwitch状态
问题描述:
我有这个函数可以得到一个UISwitch,其标签值与触发该函数的按钮相同,然后它的意思是改变UISwitch为true:Swift:用相同的标签点击一个按钮时更改UISwitch状态
let tagToSwitch = self.view.viewWithTag(sender.tag) as? UISwitch
tagToSwitch?.setOn(true, animated: true)
然而,这并不工作,如果我改变tagToSwitch!
应用程序崩溃,也会返回错误'fatal error: unexpectedly found nil while unwrapping an Optional value'
虽然我不知道我要去哪里错了,因为当我打印发件人.tag值之前,它会打印正确的值。
任何帮助表示赞赏。
答
viewWithTag
可能没有得到您想要的视图。你可以尝试一个for循环。
for view in self.view.subviews {
if let tagToSwitch = view as? UISwitch {
if tagToSwitch.tag == sender.tag {
tagToSwitch.setOn(true, animated: true)
}
}
}
谢谢!这工作:) 虽然,我也使用类似的代码,如我在问题中提到的改变一个按钮的背景颜色在同一个功能,并工作。它让我想知道为什么它不起作用的UISwitch虽然 –
我会说,因为有多个视图与该标签,该函数返回它找到的第一个,并不一定是你之后。 –
嗯......我的印象是,我的代码是通过标签'sender.tag'获得视图内的所有UISwitch项目。由于所有的UISwitch项目都是在for循环中创建的,并且在for循环中创建时添加了标签,并且每次单击开关或按钮时都会打印正确的标签 –