Swift3:用户输入的Live UiLabel更新
我到处搜索,似乎无法找到实时更新标签的明确答案。
如何在不使用按钮的情况下更新UILabel
(实时)。 例如,我有一个文本字段和一个连接到view controller
的UIlabel
。
一旦用户开始在文本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