[英]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
}
}
}
它應該更改的標簽在我的DetailViewController中,它是一個標簽。 上面的代碼來自我的原始ViewController。 我該如何進行這項工作?
要放在上下文中的更多代碼:
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
}
}
}
您需要傳遞String
而不是將文本設置為label,因為校正它並像sendToDetailViewController.messageLabelDos.text = sendingText
這樣進行設置時,由於messageLabelDos
尚未初始化,因此您將得到nil錯誤,因此請嘗試這樣。 在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
}
}
}
}
內部DetailViewController
var messageDos: String = ""
override func viewDidLoad() {
super.viewDidLoad()
self.messageLabelDos.text = messageDos
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.