我可以在 Swift 中将 UILabel 设置为 nil 吗?



我有一个表,想将其设置为 nil,以便我可以对其使用操作来更改其文本,现在没有 nil,它会显示"可选"文本!

@IBOutlet var nameLable: UILabel!
override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
}

@IBAction func helloworldaction(nameTextField: UITextField) {
   nameLable.text = "(nameTextField.text)"
}

但是当我将其更改为此时,它会显示错误:

@IBOutlet var nameLable: UILabel = nil

我该怎么办??

您不希望自己的标签为零。你只希望它的文本为空。

@IBOutlet var nameLable: UILabel!
override func viewDidLoad() {
    super.viewDidLoad()
    // SET THIS
    nameLable.text = ""
}
@IBAction func helloworldaction(nameTextField: UITextField) {
    // And use nameTextField.text directly
    nameLable.text = nameTextField.text
}

这里的问题只是"(nameTextField.text)" - 您正在使用字符串插值"(X)"这对于打印值非常方便,而无需使用格式化程序,但是您正在分配一个值 - 这就是您在这里所做的 - 您只需使用nameTextField.text

然后,您可以解开该选项的包装 - 如@Marina所示 - 如果字段为零,您还可以清除标签

if let text = nameTextField.text
{
    nameLable.text = text
}
else
{
    nameLable.text = ""
}

可能也值得花一些精力来正确拼写。 如果您知道标签的拼写方式都相同,那么跟踪问题就会容易得多:-)

您应该解开一个可选值 nameTextField.text 的包装。它可能看起来像:

if let text = nameTextField.text{
    nameLable.text = text
}

我想你可以这样做:

nameLable.text = "(nameTextField.text!)"

但强制打开包装不是一个好的选择。您可以创建一个变量来存储文本值。然后在 nameLable.text 中引用字符串,而不是直接从标签引用。

最新更新