Swift3:用户输入的实时 UiLabel 更新

Swift3: Live UiLabel update on user input

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

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

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

您正在更新文本字段中的标签shouldChangeCharactersInRange委托方法:

   func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {

      // Update Your label here......

     YourLabel.text = textField.text 
     return true
 }

使用委托方法:

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

选项 1:您可以直接对值已更改的文本字段进行操作

@IBAction func textFieldValueChange(_ sender: UITextField) {
        self.label.text = sender.text
    }

选项 2:将 Delegate 赋予 TextField

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {

     label.text = textField.text 
     return true
 }

步骤 1:Extend class 到 UITextFieldDelegate

class ViewController: UIViewController,UITextFieldDelegate

In ViewDidLoad()

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

txtDemo.delegate = self

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

第 3 步:创建新函数如下:

func LabelChanged(_ sender:Any) {
    lblDemo.text = txtDemo.text
}

Or Also use delegate method:

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

这里lblDemo是UILabel outlet,txtDemo是UITextField outlet