无法将可选值解包到标签

时间:2016-06-27 15:45:22

标签: ios xcode swift

我是这个董事会的新手。请原谅我的坏英语。

我正在尝试将子视图中的字符串发送到其父视图。如果我尝试将该字符串设置为标签,我的应用程序会崩溃并显示消息“在展开可选值时意外发现nil”。

子视图中的示例代码:

class TableViewController: UITableViewController {

override func viewDidLoad() {

    super.viewDidLoad()

    self.view.backgroundColor = UIColor.blueColor()

    sendDataToVc("test")

}

override func didReceiveMemoryWarning() {

    super.didReceiveMemoryWarning()

}

func sendDataToVc(myString : String) {

    let Vc = ViewController()
    Vc.dataFromContainer(myString)
}

父视图中的示例:

class ViewController: UIViewController {

@IBOutlet weak var label1: UILabel!
var cacheStr1 : String!
var cacheStr2 : String?

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    label1.text = ""
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

func dataFromContainer(containerData : String){


    label1.text = cacheStr1


}

@IBAction func changeLabel(sender: AnyObject) {



}

我没有更多的想法我做错了什么。谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

问题在于这一行:

let Vc = ViewController()

您正在创建新实例 - 一个新的ViewController实例。这不是你想要做的。您希望获得对现有实例的引用 - 该实例是视图控制器的父视图控制器,如果它是View Controller与TableViewController的关系。

答案 1 :(得分:0)

您最好以ViewController表单StoryBoard为例,并定义要作为属性传递的内容,然后将此属性设置为您需要显示的值,并在{{{的viewDidLoad中设置1}}根据需要更新您的视图