Swift3:用户输入的Live UiLabel更新

时间:2017-04-13 05:15:43

标签: ios swift xcode swift3 xcode8

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

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

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

4 个答案:

答案 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:您可以直接使用值更改的文本字段进行操作

enter image description here

@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