【问题标题】:Edit 2 labels from 1 text field从 1 个文本字段编辑 2 个标签
【发布时间】:2016-07-06 12:59:30
【问题描述】:

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

    func labelTextChanger() {

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

ma case

【问题讨论】:

    标签: ios swift uitextfield uilabel


    【解决方案1】:

    如果我正确理解您的问题,您是否需要在编辑 UITextField 时更改 2 个 UILabel 的文本?如果是这样,您应该使用与您的故事板文件链接的“编辑开始”或“编辑更改”IBAction。然后,将 UILabel 的值更改为 UITextField 的文本。

    @IBAction textFileIdEditingChanged {
        fromUsername.text = textFileId.text
        replyToUserName.text = textFileId.text
    } 
    

    【讨论】:

    • 很好的答案,但我需要保存 fromUserName 标签文本并在 textFileld 编辑后编辑 replyToUserName 文本
    【解决方案2】:

    试试这个,

      func labelTextChanger() {
    
            if fromUserName.text?.characters.count > 0 {
                fromUserName.text = textFileld.text
            } else  {
                replyToUserName.text = textFileld.text
            }
        }
    

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

    【讨论】:

    • 谢谢,但没有帮助。该逻辑仅填充第二个标签(replyToUserName)
    • 这意味着你的fromUserName 有一些文本,所以每次它调用else 部分。 AQnd 你从哪里调用这个方法?
    【解决方案3】:

    似乎 fromUserName.text 是一个空字符串 所以你应该改为:

      func labelTextChanger() {
    
        if fromUserName.text != "" {
            fromUserName.text = textFileld.text
        } else  {
            replyToUserName.text = textFileld.text
        }
    }
    

    【讨论】:

      【解决方案4】:

      如果您想同时更新两个标签,则不需要 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的信息

      【讨论】:

      • 那个逻辑没有改变任何标签!
      • 这将取决于您的条件 (fromUserName.text == nil) 未得到满足,即其 text 值未返回零。在不知道您的确切设置/您拥有什么代码的情况下,很难为您提供正确的使用条件。
      • 我需要在 textField 文本更改后编辑第二个标签
      • 我已经用一些代码更新了我的答案,至少应该为您指明正确的方向。
      • 谢谢,我去试试
      【解决方案5】:

      所以这里是 ma case 的正确代码:

      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
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-14
        • 1970-01-01
        相关资源
        最近更新 更多