如果我们从 segue 获取数据,如何在填写文本字段后启用按钮

Alexa289

我的 iOS 应用程序中有一个登录屏幕,有以下两种方法可以进入此登录页面:

  1. 从欢迎屏幕
  2. 在用户完成注册屏幕中的注册过程后。

登录屏幕中有两个文本字段(电子邮件和密码)和一个按钮。如果用户来自欢迎屏幕,我希望该按钮仅在用户手动填写所有文本字段后启用。在这种情况下我没有问题。我用这行代码

extension LoginlVC : UITextFieldDelegate {

    @objc func editingChanged(_ textField: UITextField) {
        // to make signUpButton enable when all text field is filled out

        if textField.text?.count == 1 {
            if textField.text?.first == " " {
                textField.text = ""
                return
            }
        }

        guard
            let email = emailTextField.text, !email.isEmpty,
            let password = passwordTextField.text, !password.isEmpty
            else {
                loginButton.alpha = 0.4
                loginButton.isEnabled = false
                return
        }
        loginButton.alpha = 1
        loginButton.isEnabled = true
    }

}

但是如果用户在完成注册过程后来自注册屏幕,我使用prepare for segue将电子邮件和密码字符串从注册屏幕发送到登录屏幕,因此登录屏幕中的文本字段将在注册过程后自动填充。

我希望登录屏幕中的按钮已启用,但不幸的是,它没有发生。

那么如何在接收到值后启用登录屏幕中的按钮prepare for segue

米兰诺萨

editingChangedcallback 仅在用户编辑textFields时调用,而不是在您以text编程方式设置其属性调用这意味着您的转场代码准备不会触发editingChanged- 因此按钮不会更新其状态。

我建议跟随。将现有代码重构为以下内容:

@objc func editingChanged(_ textField: UITextField) {
    // to make signUpButton enable when all text field is filled out

    if textField.text?.count == 1 {
        if textField.text?.first == " " {
            textField.text = ""
            return
        }
    }

    updateLoginButton()
}

func updateLoginButton() {
    guard
        let email = emailTextField.text, !email.isEmpty,
        let password = passwordTextField.text, !password.isEmpty
        else {
            loginButton.alpha = 0.4
            loginButton.isEnabled = false
            return
    }
    loginButton.alpha = 1
    loginButton.isEnabled = true
}

然后updateLoginButton在填写数据后调用准备转场代码以确保loginButton处于正确状态(并且您可以在任何想要确保状态正确的地方调用它)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如果文本字段已填写,请设置启用按钮

来自分类Dev

如果文本字段已填写,请设置启用按钮

来自分类Dev

我如何退回segue?

来自分类Dev

如果我们混淆了代码,那么我们该如何调试和修改它呢?

来自分类Dev

如果我们只有一个团队,我们如何同时进行多个冲刺?

来自分类Dev

如果我们在python中同时获取了日期和时间,如何仅获取日期

来自分类Dev

如果我们更改 UITextField 中的文本,如何更新 UIStepper 值?

来自分类Dev

如果文件名包含空格,我们如何在Android中使用URLConnection下载?

来自分类Dev

如果我们在Azure Linux VM上启用root用户,会有什么影响?

来自分类Dev

如果我们将数据库更改为 Recursive Triggers Enabled :True 会怎样?

来自分类Dev

如果我们知道加密数据和密钥,是否可以找出初始化向量

来自分类Dev

如果我们更改SSH端口,如何拥有一个幂等的Ansible剧本?

来自分类Dev

我们可以在jsp中使用@autowired吗?如果是,那么如何。

来自分类Dev

如果超时,我们如何避免出现多个Rebus消息?

来自分类Dev

如果我们在componentDidMount内部调用回调函数,如何用componentDidMount替换useEffect?

来自分类Dev

如果评论没有自己的模型,我们如何删除用户的所有评论?

来自分类Dev

如果我们知道参数并返回类型,如何使用其指针调用任何类函数?

来自分类Dev

如果使用#define预处理程序,我们如何使用嵌套的if

来自分类Dev

如果Firebase用户不验证电子邮件,我们如何删除该用户?

来自分类Dev

如果我们正在使用管道,如何获得treeinterpreter的Tree Contribution?

来自分类Dev

如果我们有一个assoc数组,如何打印值

来自分类Dev

如果我们想保留currying的值,javascript的闭包如何工作

来自分类Dev

如果我们插入循环,Http运行时缓存将如何响应

来自分类Dev

如果我们知道半径和角度,如何找到圆弧段的面积?

来自分类Dev

如果我们重新启动postgres,如何重新启动后台工作程序postgresql?

来自分类Dev

我们如何编写脚本来杀死PID(如果不是循环)?

来自分类Dev

如果我们向左移一点,最左移为1,那么如何计算?

来自分类Dev

如果我们有mac地址,如何找到IP地址

来自分类Dev

EXC_BAD_ACCESS 如果发生错误,告诉我们如何尝试捕获

Related 相关文章

  1. 1

    如果文本字段已填写,请设置启用按钮

  2. 2

    如果文本字段已填写,请设置启用按钮

  3. 3

    我如何退回segue?

  4. 4

    如果我们混淆了代码,那么我们该如何调试和修改它呢?

  5. 5

    如果我们只有一个团队,我们如何同时进行多个冲刺?

  6. 6

    如果我们在python中同时获取了日期和时间,如何仅获取日期

  7. 7

    如果我们更改 UITextField 中的文本,如何更新 UIStepper 值?

  8. 8

    如果文件名包含空格,我们如何在Android中使用URLConnection下载?

  9. 9

    如果我们在Azure Linux VM上启用root用户,会有什么影响?

  10. 10

    如果我们将数据库更改为 Recursive Triggers Enabled :True 会怎样?

  11. 11

    如果我们知道加密数据和密钥,是否可以找出初始化向量

  12. 12

    如果我们更改SSH端口,如何拥有一个幂等的Ansible剧本?

  13. 13

    我们可以在jsp中使用@autowired吗?如果是,那么如何。

  14. 14

    如果超时,我们如何避免出现多个Rebus消息?

  15. 15

    如果我们在componentDidMount内部调用回调函数,如何用componentDidMount替换useEffect?

  16. 16

    如果评论没有自己的模型,我们如何删除用户的所有评论?

  17. 17

    如果我们知道参数并返回类型,如何使用其指针调用任何类函数?

  18. 18

    如果使用#define预处理程序,我们如何使用嵌套的if

  19. 19

    如果Firebase用户不验证电子邮件,我们如何删除该用户?

  20. 20

    如果我们正在使用管道,如何获得treeinterpreter的Tree Contribution?

  21. 21

    如果我们有一个assoc数组,如何打印值

  22. 22

    如果我们想保留currying的值,javascript的闭包如何工作

  23. 23

    如果我们插入循环,Http运行时缓存将如何响应

  24. 24

    如果我们知道半径和角度,如何找到圆弧段的面积?

  25. 25

    如果我们重新启动postgres,如何重新启动后台工作程序postgresql?

  26. 26

    我们如何编写脚本来杀死PID(如果不是循环)?

  27. 27

    如果我们向左移一点,最左移为1,那么如何计算?

  28. 28

    如果我们有mac地址,如何找到IP地址

  29. 29

    EXC_BAD_ACCESS 如果发生错误,告诉我们如何尝试捕获

热门标签

归档