Swift3:用户输入的Live UiLabel更新

我到处搜索,似乎无法找到实时更新标签的明确答案。

如何在不使用按钮的情况下更新UILabel (实时)。 例如,我有一个文本字段和一个连接到view controllerUIlabel

一旦用户开始在文本textfield键入内容,就会在UI标签上实时显示相同的文本。 结果,这消除了使用按钮来更新标签。 我该怎么做呢?

使用委托方法:

 func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { label.text = textField.text return true } 

您将在textField中更新您的标签shouldChangeCharactersInRange Delegate方法:

  func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { // Update Your label here...... YourLabel.text = textField.text return true } 

选项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 } 

第1步:将类扩展为UITextFieldDelegate

 class ViewController: UIViewController,UITextFieldDelegate 

在ViewDidLoad()中

第2步:将以下代码添加到ViewDidLoad()

 txtDemo.delegate = self txtDemo.addTarget(self, action: #selector(LabelChanged(_:)), for:.editingChanged) 

第3步:创建新function如下:

 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