![](/img/trans.png)
[英]Keep contents of a textfield visible after going back and forwards in navigation controller
[英]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.