簡體   English   中英

無法將String類型的值分配為UILabel類型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM