从1个文本字段编辑2个标签
美好的一天!所以这是我的问题 - 我需要从1个文本字段中更改2个不同的标签。试过简单的if-else逻辑,但它不适用于我的情况。从1个文本字段编辑2个标签
func labelTextChanger() {
if fromUserName.text == nil {
fromUserName.text = textFileld.text
} else {
replyToUserName.text = textFileld.text
}
}
试试这个,
func labelTextChanger() {
if fromUserName.text?.characters.count > 0 {
fromUserName.text = textFileld.text
} else {
replyToUserName.text = textFileld.text
}
}
因为它会返回nil,只有当在内存中不是存在了。所以,它不能是nil
。
如果您要将两个标签更新到一起,则不需要else
。
if fromUserName.text == nil {
fromUserName.text = textFileld.text
replyToUserName.text = textFileld.text
}
你可以使用一个实现的一个非常广阔的例子。基本上你应该使用UITextFieldDelegate
。当用户完成编辑文本字段时,将会拨打textFieldDidEndEditing:
,在此功能中您可以更新标签。
import UIKit
class ViewController: UIViewController, UITextFieldDelegate {
var labelOne = UILabel()
var labelTwo = UILabel()
var myTextField = UITextField()
override func viewDidLoad() {
super.viewDidLoad()
}
func textFieldDidEndEditing(textField: UITextField) {
if textField == myTextField {
labelOne.text = textField.text
labelTwo.text = textField.text
}
}
}
你可以阅读更多关于UITextFieldDelegate
here
该逻辑没有改变任何标签! –
那么这将是你的条件('fromUserName.text == nil')没有得到满足,即它的'text'值不返回零。不知道你的确切设置/你有什么代码,它很难给你正确的使用条件。 – Hodson
我需要在textField文本更改后编辑第二个标签 –
似乎fromUserName.text是一个空字符串 所以你应该更改为:
func labelTextChanger() {
if fromUserName.text != "" {
fromUserName.text = textFileld.text
} else {
replyToUserName.text = textFileld.text
}
}
如果我正确理解你的问题,你需要每当编辑UITextField时都要更改2个UILabel的文本?如果是这样,您应该使用与您的故事板文件链接的“Editing Began”或“Editing Changed”IBAction。然后,让UILabel的值更改为任何UITextField的文本。
@IBAction textFileIdEditingChanged {
fromUsername.text = textFileId.text
replyToUserName.text = textFileId.text
}
很好的答案,但我需要保存来自用户名标签文本和editFileToUserName文本后textFileld编辑 –
所以这里是马情况下正确的代码:
var zalupa = Bool()
func textFieldShouldReturn(textField: UITextField) -> Bool {
if (!zalupa) {
fromLabel.text = textField.text
zalupa = true
} else {
replyLabel.text = textField.text
zalupa = false
}
return true
}
谢谢你,但它并没有帮助。该逻辑只填写第二个标签(replyToUserName) –
,这意味着你的'fromUserName'有一些文本,所以每次调用else部分。 AQnd从哪里调用这个方法? – Lion