如何在用户在UITextField中编辑他的详细信息时显示保存按钮? (Swift 3)
问题描述:
我希望我的保存按钮仅在用户编辑他的用户名/电子邮件时才显示。我将保存按钮的alpha设置为0,所以如果用户编辑了某些内容,按钮的alpha将为1,这是他唯一可以保存其细节的时间。出于某种原因,我不能像我想要的那样工作。如何在用户在UITextField中编辑他的详细信息时显示保存按钮? (Swift 3)
这里是我的代码:
import UIKit
import Parse
class SettingsTableViewController: UITableViewController, UITextFieldDelegate {
@IBOutlet var currentUsername: UITextField!
@IBOutlet var currentEmail: UITextField!
@IBOutlet var saveButton: UIButton!
let currentUser = PFUser.current()
override func viewDidLoad() {
super.viewDidLoad()
currentUsername.text = currentUser?.username
currentEmail.text = currentUser?.email
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder()
saveButton.alpha = 1
return true
}
@IBAction func saveButtonPressed(_ sender: Any) {
if currentUsername.text != currentUser?.username {
currentUser?.saveInBackground()
}
}
@IBAction func signoutButtonPressed(_ sender: Any) {
PFUser.logOut()
performSegue(withIdentifier: "userSignedOut", sender: self)
}
}
提前感谢!
答
您可以使用编辑而改变,当添加目标文本框。 以下是您可以在课堂上使用的代码。
override func viewDidLoad() {
super.viewDidLoad()
currentUsername.addTarget(self, action: #selector(self.textFieldDidChange(_:)), for: .editingChanged)
currentEmail.addTarget(self, action: #selector(self.textFieldDidChange(_:)), for: .editingChanged)
}
func textFieldDidChange(_ textField: UITextField) {
saveButton.alpha = currentUsername.text?.characters.count != 0 && currentEmail.text?.characters.count != 0 ? 1 : 0
}
我会更喜欢你隐藏/取消隐藏按钮,而不是改变阿尔法按钮
func textFieldDidChange(_ textField: UITextField) {
saveButton.isHidden = currentUsername.text?.characters.count == 0 || currentEmail.text?.characters.count == 0
}
+0
感谢您的解决方案! – acoustickat
答
请尽量将
override func viewDidLoad() {
super.viewDidLoad()
currentUsername.text = currentUser?.username
currentEmail.text = currentUser?.email
saveButton.isHidden = true
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder()
saveButton.isHidden = false
return true
}
@IBAction func saveButtonPressed(_ sender: Any) {
if currentUsername.text != currentUser?.username {
currentUser?.saveInBackground()
saveButton.isHidden = true
}
}
使用是否隐藏属性显示/隐藏 –
是功能'textFieldShouldReturn'不叫?如果它没有被调用,你应该设置currentUsername和currentEmail这两个字段的委托,例如currentUsername.delegate = self。 – tmiedema
你也可以设置高度常数0或你的身高,默认情况下0当你编辑它给你的特定高度 –