我有一个表,想将其设置为 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 中引用字符串,而不是直接从标签引用。