【问题标题】:Cannot unwrap optional value to label无法打开标签的可选值
【发布时间】:2016-06-28 00:18:34
【问题描述】:

我是这个董事会的新手。请提前原谅我的英语不好。

我正在尝试将字符串从子视图发送到他的父视图。如果我尝试将该字符串设置为标签,我的应用程序会崩溃并显示消息“在展开可选值时意外发现 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) {



}

我不知道我做错了什么。感谢您的帮助。

【问题讨论】:

    标签: ios xcode swift


    【解决方案1】:

    问题出在这一行:

    let Vc = ViewController()
    

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

    【讨论】:

      【解决方案2】:

      您最好实例化您的 ViewController 表单 StoryBoard 并定义您要作为属性传递的内容,然后将此属性设置为您需要显示的值,并在您的 ViewController 的 viewDidLoad 中更新您的视图随你所需

      【讨论】:

        猜你喜欢
        • 2020-09-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-18
        • 2018-12-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多