【问题标题】:How to update label from UITextField on press of button如何在按下按钮时从 UITextField 更新标签
【发布时间】:2026-01-10 00:40:01
【问题描述】:

所以我知道这可能是一件容易的事,但我从 macOS 的 swift 和 swift 开发开始。我想制作一个简单的应用程序,要求输入一个名字,然后说“你好,名字”。在 macOS 开发中,一种方法是这样做:

@IBOutlet weak var nameField: NSTextField!
.
// More code here
.
@IBAction func helloButton(_ sender: Any) {
    var name = nameField.stringValue
    if name.isEmpty{
        name = "World"
    }

    let greeting = "Hello, \(name)"
    helloLabel.stringValue = greeting
}

对于 iOS 是否有这样做或类似的东西?我尝试为 iOS 执行此操作,但它不适用于我。 “nameField.stringValue”不存在。任何帮助将不胜感激。

【问题讨论】:

  • nameField.text 怎么样?
  • nameField.text中NSTextField的属性text怎么样

标签: ios swift macos uibutton uitextfield


【解决方案1】:
@IBOutlet weak var nameField: UITextField!
.
// More code here
.
@IBAction func helloButton(_ sender: Any) {
   var name = nameField.text!
   if name.isEmpty {
      name = "World"
   }

   let greeting = "Hello, \(name)"
    helloLabel.text = greeting
}

【讨论】:

  • UITextField text 属性返回一个可选字符串String?。请注意,它有一个空字符串作为默认值,因此即使您将 nil 分配给它,它也永远不会返回 nil。所以可以强制打开它的值。 var name = nameField.text!
  • 所有帮助过的人,非常感谢。这个解决方案 + 强制展开建议解决了我遇到的问题。
  • @IraniyaNaynesh 不会。永远不会调用 nil 合并运算符
  • 请重新阅读我的评论。尝试将 nil 分配给 text 属性,然后检查 if nameField.text == nil。它会返回 false
【解决方案2】:

我想这可能会对你有所帮助 -

import UIKit

class ViewController: UIViewController {

    //created a string variable
    var name: String = ""

    //our label to display input
    @IBOutlet weak var labelName: UILabel!

    //this is the text field we created
    @IBOutlet weak var textFieldName: UITextField!

    @IBAction func buttonClick(sender: UIButton) {
        //getting input from Text Field
        name = textFieldName.text!

        //Displaying input text into label
        labelName.text = "Hello \(name)"
    }
}

这是输出 -

参考 - https://www.simplifiedios.net/xcode-text-field-tutorial-ios-using-swift/

谢谢。

【讨论】:

    【解决方案3】:

    你可以这样做。

    @IBAction func helloButton(_ sender: Any) {
    let name = txtSearch.text
            if !name!.isEmpty {
                helloLabel.text = "Hello, \(name)"
            }
    }
    

    【讨论】:

    • 如果您在字符串插值之前不解开可选字符串,这将导致 Optional("whatever")
    【解决方案4】:

    对于 iOS,您可以使用其 text 属性获取文本字段的字符串值:

    let greeting = "Hello, \(nameField.text!.isEmpty ? "World" : nameField.text!)"
    helloLabel.text = greeting
    

    虽然text 属性是一个可选 字符串,但它有一个空字符串作为默认值,所以即使你给它分配了nil,它也永远不会返回nil(感谢@Leo Dabus for注释)。

    此外,您可以如上所述通过其text 属性设置UILabel (helloLabel)。

    【讨论】:

    • 顺便说一句,你可以使用 UIKeyInput hasText property developer.apple.com/documentation/uikit/uikeyinput
    • "Hello, " + (nameField.hasText ? nameField.text! : "World")
    • @LeoDabus 好点!我不确定name.hasText!name.text!.isEmpty 功能之间是否有任何区别,我仍然更喜欢使用name.hasText,因为它指定给UIKeyInput...非常感谢:)
    • 唯一的区别是它的可用性iOS10+。不客气
    最近更新 更多