在我正在开发的应用中,有一个电子邮件地址和密码UITextField。
我正在尝试设置条件,以便当按下SignIn
按钮时,如果其中一个或两个都为空(“”),则占位符文本应为红色,突出显示给用户以完成它们。
我是iOS开发的新手(或者一般的开发)所以我的逻辑思维可能是错误的。 无论如何,这是我写的和开头的:
@IBAction func signInTapped(_ sender: Any) {
if emailField.text == "" {
emailField.attributedPlaceholder = NSAttributedString(string: "Email address", attributes: [NSForegroundColorAttributeName: UIColor.red])
if pwdField.text == "" {
pwdField.attributedPlaceholder = NSAttributedString(string: "Password", attributes: [NSForegroundColorAttributeName: UIColor.red])
}
}else {
如果符合以下条件,则此操作非常有效:
- 两个字段均为空 - 电子邮件地址为空且密码字段已填写
但是......如果电子邮件地址字段已填写密码字段为空,密码字段占位符文本不会更改。
我很想知道我哪里出错了,或者是否有更简单/逻辑的方式来实现结果。
答案 0 :(得分:0)
我不喜欢{}
的快捷方式,所以我举例说明他们与众不同。
您的代码有不同的缩进:
@IBAction func signInTapped(_ sender: Any)
{
if emailField.text == ""
{
emailField.attributedPlaceholder = NSAttributedString(string: "Email
address", attributes: [NSForegroundColorAttributeName:
UIColor.red])
if pwdField.text == ""
{
pwdField.attributedPlaceholder = NSAttributedString(string:
"Password", attributes: [NSForegroundColorAttributeName:
UIColor.red])
}
}
else {
注意您的if
语句是如何嵌套的。除非pwdField
为空,否则不会检查emailField
。
要修复它,请将其移除并注意我移动else
并将其转为else if
,
固定代码:
@IBAction func signInTapped(_ sender: Any)
{
if emailField.text == ""
{
emailField.attributedPlaceholder = NSAttributedString(string: "Email
address", attributes: [NSForegroundColorAttributeName:
UIColor.red])
}
if pwdField == ""
{
pwdField.attributedPlaceholder = NSAttributedString(string:
"Password", attributes: [NSForegroundColorAttributeName:
UIColor.red])
}
else if emailField.text != ""
{
//here both fields have text inside them
}
}
答案 1 :(得分:0)
你在另一个if语句中有一个If语句。
而不是:
if emailField.text == "" {
emailField.attributedPlaceholder = NSAttributedString(string: "Email address", attributes: [NSForegroundColorAttributeName: UIColor.red])
if pwdField.text == "" {
pwdField.attributedPlaceholder = NSAttributedString(string: "Password", attributes: [NSForegroundColorAttributeName: UIColor.red])
}
}
使用此:
if emailField.text == "" {
emailField.attributedPlaceholder = NSAttributedString(string: "Email address", attributes: [NSForegroundColorAttributeName: UIColor.red])
}
if pwdField.text == "" {
pwdField.attributedPlaceholder = NSAttributedString(string: "Password", attributes: [NSForegroundColorAttributeName: UIColor.red])
}
希望这有帮助!