Swift3:用户输入的实时 UiLabel 更新
Posted
技术标签:
【中文标题】Swift3:用户输入的实时 UiLabel 更新【英文标题】:Swift3: Live UiLabel update on user input 【发布时间】:2017-04-13 05:15:42 【问题描述】:我到处搜索,似乎找不到关于实时更新标签的明确答案。
如何在不使用按钮的情况下更新UILabel
(实时)。例如,我有一个文本字段和一个连接到view controller
的UIlabel
。
一旦用户开始输入textfield
,相同的文本就会实时显示在 UI 标签上。因此,这消除了使用按钮来更新标签。我该怎么做呢?
【问题讨论】:
只需实现 UITextFieldDelegate 方法并在其中更新您的标签。 【参考方案1】:使用委托方法:
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool
label.text = textField.text
return true
【讨论】:
【参考方案2】:您正在 textField shouldChangeCharactersInRange
委托方法中更新您的标签:
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool
// Update Your label here......
YourLabel.text = textField.text
return true
【讨论】:
@LinusG。现在用 Swift 3 更新。 @LinusG。好的,谢谢,但如果你找到了,你也可以编辑我的答案。【参考方案3】:选项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
【讨论】:
【参考方案4】:第 1 步:将类扩展为 UITextFieldDelegate
class ViewController: UIViewController,UITextFieldDelegate
在 ViewDidLoad() 中
第 2 步:将以下代码添加到 ViewDidLoad()
txtDemo.delegate = self
txtDemo.addTarget(self, action: #selector(LabelChanged(_:)), for:.editingChanged)
第三步:新建函数如下:
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 出口,txtDemo 是 UITextField 出口
【讨论】:
以上是关于Swift3:用户输入的实时 UiLabel 更新的主要内容,如果未能解决你的问题,请参考以下文章