当我尝试在不同的故事板中使用 UISwitch 隐藏我的背景图像时,它不起作用。斯威夫特 4



当我打开uiswitch时,我试图使其隐藏背景图像,但我会得到错误:线程1:致命错误:在解开可选值时出乎意料地发现了无效。我究竟做错了什么?当它在主故事板上时,它可以正常工作,但是在设置板上时,它不是。

代码:

@IBAction func switchBackground(_ sender: UISwitch) {
    if (sender.isOn == true) {
    Background!.isHidden = false
    amountDue.textColor = UIColor.white
    amountMoney.textColor = UIColor.white
    amountPeople.textColor = UIColor.white
    }else {
    Background!.isHidden = true
    amountDue.textColor = UIColor.black
    amountMoney.textColor = UIColor.black
    amountPeople.textColor = UIColor.black
    amountDueText.textColor = UIColor.black
    amountPeopleText.textColor = UIColor.black
    amountMoneyText.textColor = UIColor.black
    }
}

您的问题在这里

   Background!.isHidden = false

您无法更改当前不在Active View Controller中的UIImageView的属性

您可以使用

   Background?.isHidden = false

,如果图像视图为nil

,这将无法实现您的目标

检查@outlet是否通过故事板连接为您的背景。否则它将崩溃,这就是告诉您的。

另外,如果背景是@outlet,则无需强迫将其拆开!除非您以编程方式初始化它,并且它是一个可变l,如果是的,则请确保初始化背景:UIView()

另一个注释是在开始时用小字母定义变量,而不是背景。

最新更新