如何在用户在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) 

} 

} 

提前感谢!

Here's a screenshot for reference

+1

使用是否隐藏属性显示/隐藏 –

+0

是功能'textFieldShouldReturn'不叫?如果它没有被调用,你应该设置currentUsername和currentEmail这两个字段的委托,例如currentUsername.delegate = self。 – tmiedema

+0

你也可以设置高度常数0或你的身高,默认情况下0当你编辑它给你的特定高度 –

您可以使用编辑而改变,当添加目标文本框。 以下是您可以在课堂上使用的代码。

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 

    } 

}