从1个文本字段编辑2个标签

问题描述:

美好的一天!所以这是我的问题 - 我需要从1个文本字段中更改2个不同的标签。试过简单的if-else逻辑,但它不适用于我的情况。从1个文本字段编辑2个标签

func labelTextChanger() { 

    if fromUserName.text == nil { 
     fromUserName.text = textFileld.text 
    } else { 
     replyToUserName.text = textFileld.text 
    } 
} 

ma case

试试这个,

func labelTextChanger() { 

     if fromUserName.text?.characters.count > 0 { 
      fromUserName.text = textFileld.text 
     } else { 
      replyToUserName.text = textFileld.text 
     } 
    } 

因为它会返回nil,只有当在内存中不是存在了。所以,它不能是nil

+0

谢谢你,但它并没有帮助。该逻辑只填写第二个标签(replyToUserName) –

+0

,这意味着你的'fromUserName'有一些文本,所以每次调用else部分。 AQnd从哪里调用这个方法? – Lion

如果您要将两个标签更新到一起,则不需要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 
     } 
    } 
} 

你可以阅读更多关于UITextFieldDelegatehere

+0

该逻辑没有改变任何标签! –

+0

那么这将是你的条件('fromUserName.text == nil')没有得到满足,即它的'text'值不返回零。不知道你的确切设置/你有什么代码,它很难给你正确的使用条件。 – Hodson

+0

我需要在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 
} 
+0

很好的答案,但我需要保存来自用户名标签文本和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 
}