代码之家  ›  专栏  ›  技术社区  ›  Laurence Wingo

什么条件逻辑可以用于swift中的子类布尔值?

  •  -1
  • Laurence Wingo  · 技术社区  · 8 年前

    我正在对uitextfield进行子类化,以便在右侧创建一个覆盖按钮,该按钮将切换IsSecureTextentry布尔值。通常,在故事板中创建IBactions时,布尔值是基于发送者确定的,我将在这样的目标C代码中实现发送者:

    -(IBAction)showPasswordTapped:(UIButton *)sender{
       sender.selected = !sender.selected;
       self.passwordField.secureTextEntry = !sender.selected;
    }
    

    然而,既然我已经对其进行了子类化,我考虑使用if-else语句,但是逻辑看起来好像只会将布尔值设置回true。如果我没有访问发送者的权限,那么合适的条件语句是什么?

    以下是我在Swift中的子类:

    class SecurePasswordUITextField : UITextField {
        override func awakeFromNib() {
            super.awakeFromNib()
            self.isSecureTextEntry = true
            var overlayButton = UIButton.init(type: UIButtonType.custom)
            overlayButton.titleLabel = "Show"
            overlayButton.addTarget(self, action: #selector(showSecureCharacters), for: .touchUpInside)
            overlayButton = CGRect.init(x: self.bounds.origin.x, y: self.bounds.origin.y, width: 28, height: 28)
            self.rightView = overlayButton
            self.rightViewMode = UITextFieldViewMode.always
        }
        func showSecureCharacters(){
            if self.isSecureTextEntry {
                self.isSecureTextEntry = false
            } else {
                self.isSecureTextEntry = true
            }
            if !self.isSecureTextEntry{
                self.isSecureTextEntry = true
            } else {
                self.isSecureTextEntry = false
            }
    
        }
    }
    
    1 回复  |  直到 8 年前
        1
  •  1
  •   Shehata Gamal    8 年前

    您可以访问发件人

    overlayButton.addTarget(self, action: #selector(showSecureCharacters(_:)), for: .touchUpInside)
    

    / /

    @objc func showSecureCharacters(_ sender:UIButton){ --- }
    

    这就足够了

    self.isSecureTextEntry = !self.isSecureTextEntry