我到处搜索,似乎无法找到实时更新标签的明确答案。
如何在不使用按钮的情况下更新UILabel
(实时)。例如,我有一个文本字段,UIlabel
连接到view controller
。
用户一旦开始输入textfield
,就会在UI标签上实时显示相同的文字。因此,消除了使用按钮来更新标签。我该怎么做呢?
答案 0 :(得分:7)
使用委托方法:
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
label.text = textField.text
return true
}
答案 1 :(得分:3)
您将在textField shouldChangeCharactersInRange
委托方法:
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
// Update Your label here......
YourLabel.text = textField.text
return true
}
答案 2 :(得分:1)
选项1:您可以直接使用值更改的文本字段进行操作
@IBAction func textFieldValueChange(_ sender: UITextField) {
self.label.text = sender.text
}
选项2:将代理提交给TextField
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
label.text = textField.text
return true
}
答案 3 :(得分:0)
第1步:将课程扩展为 UITextFieldDelegate
class ViewController: UIViewController,UITextFieldDelegate
在ViewDidLoad()
中
第2步:将以下代码添加到 ViewDidLoad()
txtDemo.delegate = self
txtDemo.addTarget(self, action: #selector(LabelChanged(_:)), for:.editingChanged)
第3步:创建新功能如下:
func LabelChanged(_ sender:Any) {
lblDemo.text = txtDemo.text
}
或者也使用委托方法:
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
lblDemo.text = txtDemo.text
return true
}
此处 lblDemo 是UILabel outlet, txtDemo 是UITextField outlet