如何从 swift Xcode 中的不同 class 更改 UISwitch 的值?

How do i change the value of a UISwitch from a different class in swift Xcode?

我正在创建一个应用程序,我需要在用户按下同意按钮后将 UISwitch 的值从 false 更改为 true。

所以当用户点击一个按钮时,会出现一个涉及条款和条件的页面,页面上有两个按钮,一个是“不同意”,另一个是“同意”,当用户点击同意按钮页面被关闭,这会将您带回到之前的注册表单,并且需要将 UISwitch 从 false 更改为 true,显然当单击不同意时页面被关闭并且开关应保持在 false

这是我正在使用的代码,我不确定为什么它不起作用:

我的 SignUpVC class 我有以下内容:

我在哪里创建我的开关:

 let termsAndConditionsBox: UISwitch = {
    let switchA = UISwitch()
    return switchA
}()

我用它来改变开关的值,当我调用这个class

中的函数时它起作用
func setAgreeSwitch(value: Bool) {
    termsAndConditionsBox.isOn = value
}

但是当我通过以下方式调用上述函数将开关值更改为 true 时,它​​不起作用:

 @objc func handleAgreeTapped() {
    let signUpVC = SignUpVC()
    signUpVC.setAgreeSwitch(value: true)
}

TermsAConditions 窃听代码:

@objc func TermsAndConditionsTapped() {
    let termsAndConditions = TermsAndConditionsVC()
    present(termsAndConditions, animated: true, completion: nil)
    
}

我该怎么做?

这个

 let signUpVC = SignUpVC()

是一个新对象而不是呈现的 1 ,你需要一个内部委托 TermsAConditionsVC

weak var delegate:SignUpVC?

然后

@objc func handleAgreeTapped() {
   delegate?.setAgreeSwitch(value: true)
}

另外不要忘记在导航到 TermsAConditionsVC

时设置 delegate 属性
termsAndConditions.delegate = self
present(termsAndConditions, animated: true, completion: nil)