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

时间:2016-02-26 10:19:10

标签: ios swift uilabel

我有一张桌子,想把它设置为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

我该怎么办?

4 个答案:

答案 0 :(得分:1)

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

@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
}

答案 1 :(得分:1)

这里的问题只是"\(nameTextField.text)" - 您正在使用字符串插值"\(X)",它可以方便地打印值而无需使用格式化程序,但是您要分配一个值 - 这是你在这做什么 - 你只需使用nameTextField.text

然后您可以打开选项 - 正如@Marina向您展示的那样 - 如果字段为零,您也可以清除标签

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

也许值得花一些精力拼写正确的东西。如果您知道标签拼写方式相同,那么跟踪问题要容易得多: - )

答案 2 :(得分:0)

您应该打开一个可选值nameTextField.text。它看起来像:

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

答案 3 :(得分:0)

我想你可以这样做:

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

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

相关问题