繁体   English   中英

从导航堆栈返回后如何清除文本字段框?

[英]How do you clear a textfield box after going back from a navigation stack?

例如,我的主登录屏幕有两个用于用户名和密码的文本框。 登录并转到我的第二个视图控制器后,我有一个注销按钮。 按注销按钮使我回到根视图控制器(登录屏幕)。 但是,文本字段仍被用户名条目占用。 有没有办法自动清除它?

在 viewWillAppear 函数中插入: yourTextField.text = ""用于两个文本字段控件。 您也可以将它放在 viewDidLoad 中,但这可能会或可能不会持续工作,具体取决于您设置导航的方式。 如果您对第二个控制器进行直接切换并返回它应该没问题。 这也适用于多行 textView 类型控件。

听起来您的登录视图控制器正在呈现您的主视图控制器。 我不相信有一种自动擦除文本框的方法,但是您始终可以在验证凭据之后和呈现主视图之前设置它们。

我使用的方法是自动完成的,因为登录视图被关闭,如果有人注销并重新登录,则会创建一个新视图。为此,只需将当前的第二个视图切换为根视图,并以模态呈现登录视图。 登录完成后,您关闭登录视图并返回主视图。 注销,然后将再次触发登录视图模式,该模式将为空白。

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    mobileNoText.text = ""
    passwordText.text = ""
}

在您的登录按钮 IBAction 中,您必须添加此代码。

   @IBOutlet weak var usernameTextField: UITextField!
   @IBOutlet weak var passwordTextField: UITextField!

   @IBAction func loginButtonPressed(_ sender: UIButton) {

     //Your other code goes here

     //Add this code at the end
     usernameTextField.text = ""  //clear the username text field
     passwordTextField.text = "" ////clear the password text field

        }

这将在您注销时清除用户名和密码文本字段。 所以你会看到一个清晰的登录表单。

在 viewWillAppear 中,您可以检测它是否由于被推入或由于另一个视图被弹出而出现。 这是假设您的登录名是链中的第一个控制器。

if (!self.isMovingToParentViewController){
   // Clear fields
}
else{
   // Showing for first time
}

然后只需添加代码即可将登录字段归零。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM