将UILabel与UITextField同步

时间:2017-02-06 22:32:56

标签: ios swift

我正在尝试使用两个UITextFields的值同步两个不同的UILabel,如果文本字段中没有数据,那么我希望它们保留我在属性检查器中设置的标签占位符(&#34) ;标签1"&"标签2"):

func textFieldDidEndEditing(_ textField: UITextField) {
        labelOne.text = labelOneTextField.text
        labelTwo.text = labelTwoTextField.text
}

但是,当我在第一个文本字段中输入文本并点击完成后,第二个标签变为空白。所以我尝试了这个:

func textFieldDidEndEditing(_ textField: UITextField) {
    if self.labelOneTextField != nil {
        labelOne.text = "Label 1"
        labelTwo.text = "Label 2"
    } else {  
        labelOne.text = labelOneTextField.text
        labelTwo.text = labelTwoTextField.text
    }
}

但是,这只会为第一个文本字段为空白而设置一个规则,并且它看起来非常混乱。有什么更好的格式化方法,特别是考虑到这种形式会有更多的文本字段/标签。谢谢。

2 个答案:

答案 0 :(得分:1)

只需获取值并检查它是否为空:

if let labelOneText = labelOneTextField.text, !labelOneText.characters.isEmpty {
    labelOne.text = labelOneText
}
if let labelTwoText = labelTwoTextField.text, !labelTwoText.characters.isEmpty {
    labelTwo.text = labelTwoText
}

答案 1 :(得分:0)

选择文本字段:

switch textField {
case labelOneTextField:
    labelOne.text = labelOneTextField.text
case labelTwoTextField:
    labelTwo.text = labelTwoTextField.text
....
default:
    break
}