【问题标题】:How do i change the value of a UISwitch from a different class in swift Xcode?如何从 swift Xcode 中的不同类更改 UISwitch 的值?
【发布时间】:2020-07-31 15:58:30
【问题描述】:

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

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

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

我的 SignUpVC 类是否有以下内容:

我在哪里创建我的开关:

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

我用它来改变当我在这个类中调用函数时起作用的开关的值

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)
    
}

我该如何进行这项工作?

【问题讨论】:

  • 你在哪里创建开关?视图控制器应该保持对它的引用,否则它将超出范围。
  • 我在 SignUpVC 类中创建了开关,我正在尝试从 TermsAConditionsVC 类更改它

标签: ios swift xcode uiswitch


【解决方案1】:

这个

 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)

【讨论】:

  • 我做了这些更改,但它仍然不起作用。正确设置委托是什么意思?
  • 我已将其添加到底部“TermsAConditions Tapped”下的上述问题中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-27
  • 2015-08-10
  • 1970-01-01
  • 2018-09-05
  • 1970-01-01
  • 2020-06-28
相关资源
最近更新 更多