我希望我的代码只显示标签,当且仅当textfiled中有文本时,如果没有文本,则应隐藏标签。而已。我在下面的代码没有按照上面的描述进行操作。
import UIKit
class ViewController: UIViewController {
@IBOutlet var label: UILabel!
@IBOutlet var txtfield: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
appear()
}
func appear() {
if (txtfield.text?.isEmpty)! {
label.isHidden = true
}
else {
label.isHidden = false
}}}
答案 0 :(得分:2)
您的代码无效,因为仅在加载View Controller时执行检查。
您需要做的是每次用户完成编辑文本字段时运行appear()函数。
因此,只需将文本视图的委托设置为此视图控制器并实现此功能:
optional func textViewDidEndEditing(_ textView: UITextView)
https://developer.apple.com/documentation/uikit/uitextviewdelegate/1618628-textviewdidendediting
然后只需调用其中的appear()。
编辑:文字字段版本
optional func textFieldDidEndEditing(_ textField: UITextField)
https://developer.apple.com/documentation/uikit/uitextfielddelegate/1619591-textfielddidendediting
答案 1 :(得分:0)
使用以下代码。
override func viewWillAppear(_ animated: Bool)
{
textChanged(txtField)
}
func textChanged(_ textField: UITextField) {
if textField.text == ""
{
textField.isHidden = true
}
else
{
textField.isHidden = false
}
print("Hello")
}
override func viewDidLoad()
{
super.viewDidLoad()
txtField.addTarget(self, action: #selector(textChanged(_:)),for: .allEvents)
}
func textChanged
会隐藏您的textField
,如果它是空的。viewWillAppear
会在屏幕显示时检查textField
。viewDidLoad
目标(textChanged
)已为每个活动添加到textField
。