[英]Cannot assign value of type String to type UILabel
I have marked the part of my code where the problem is, it is commented out. 我已经在我的代码部分标记了问题所在,已将其注释掉。 The error message is:
错误消息是:
Cannot assign value of type String!
无法分配字符串类型的值! to type UILabel!.
键入UILabel!。
func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "SendDataSegue" {
if let sendToDetailViewController = segue.destinationViewController as? DetailViewController {
var sendingText = metadataObj.stringValue
sendToDetailViewController.messageLabelDos = sendingText
}
}
}
The label it should be changing is in my DetailViewController and it is a label. 它应该更改的标签在我的DetailViewController中,它是一个标签。 The code above is from my original ViewController.
上面的代码来自我的原始ViewController。 How can I make this work?
我该如何进行这项工作?
More code to put in context: 要放在上下文中的更多代码:
if metadataObj.stringValue != nil {
dispatch_async(dispatch_get_main_queue()) {
self.performSegueWithIdentifier("SendDataSegue", sender: self)
}
func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "SendDataSegue" {
if let sendToDetailViewController = segue.destinationViewController as? DetailViewController {
var sendingText = metadataObj.stringValue
sendToDetailViewController.viaSegue = sendingText
}
}
}
You need to pass the String
instead of setting text to label, because when you correct it and set like this sendToDetailViewController.messageLabelDos.text = sendingText
, you will get nil error because messageLabelDos
is not initialize yet, so try like this. 您需要传递
String
而不是将文本设置为label,因为校正它并像sendToDetailViewController.messageLabelDos.text = sendingText
这样进行设置时,由于messageLabelDos
尚未初始化,因此您将得到nil错误,因此请尝试这样。 Create one string instance in DetailViewController
and use that inside prepareForSegue
for passing String and then use that String
instance in viewDidLoad
to assign Label
to text. 在
DetailViewController
创建一个字符串实例,并在prepareForSegue
中使用该实例传递字符串,然后在viewDidLoad
使用该String
实例将Label
分配给文本。
class ViewController: UIViewController {
//Your other methods
func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "SendDataSegue" {
if let sendToDetailViewController = segue.destinationViewController as? DetailViewController {
var sendingText = metadataObj.stringValue
sendToDetailViewController.messageDos = sendingText
}
}
}
}
Inside DetailViewController
内部
DetailViewController
var messageDos: String = ""
override func viewDidLoad() {
super.viewDidLoad()
self.messageLabelDos.text = messageDos
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.