【问题标题】:UITextField nil on button click, but works onchangeUITextField 在按钮单击时为零,但在更改时有效
【发布时间】:2018-11-28 16:55:57
【问题描述】:

单击按钮时出现以下错误

线程 1:致命错误:在展开可选值时意外发现 nil

以下是代码

@IBOutlet weak var UserId: UITextField!{
    didSet{
        UserId.setBottomBorder()
        UserId.delegate = self
    }
}
@IBOutlet weak var Password: UITextField!{
    didSet{
        Password.setBottomBorder()
        Password.delegate = self
    }
}

@IBAction func logincta(_ sender: Any) {
           guard let _ = UserId.text, UserId.text?.characters.count != 0 else {
        print("test")
        return
    }

}

但在以下 onchange 代码中可以正常工作

@IBAction func UserIdChanged(_ sender: Any) {
    if UserId.text == "" {
        UserId.setBottomBorder()
    }
    else{
    UserId.setPurpleBottomBorder()
    }
}

@IBAction func PasswordChanged(_ sender: Any) {
    if Password.text == "" {
        Password.setBottomBorder()
    }
    else{
        Password.setPurpleBottomBorder()
    }
}

我想知道它在 onchange 事件“if UserId.text ==”中是如何工作的,但不是在按钮点击中

【问题讨论】:

  • 能否请您展示您的setBottomBorder 功能。
  • 检查您的文本字段出口参考
  • 但如果文本字段引用错误,它不应该在更改事件上工作......但它工作正常......只有在按钮点击我得到错误
  • @iPeter 以下是代码 func setBottomBorder(){ self.layer.shadowColor = UIColor(red:193/255 , green:193/255 , blue:193/255 , alpha:100 )。 cgColor self.layer.shadowOffset = CGSize(width: 0.0, height: 1.0) self.layer.shadowOpacity = 1.0 self.layer.shadowRadius = 0.0 }

标签: ios iphone swift


【解决方案1】:

我已经试过你的代码,它似乎工作......

无论如何都可以尝试以这种方式使用守卫:

guard let numOfChars = UserId?.text?.count, numOfChars != 0 else {
        print("test")
        return
    }

【讨论】:

    猜你喜欢
    • 2012-12-03
    • 2018-04-13
    • 1970-01-01
    • 1970-01-01
    • 2020-07-20
    • 2016-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多