ios - Xcode 8 - 意外发现 nil

标签 ios swift xcode

<分区>

我刚开始学习 Swift,我有一个问题。 我有两个 View Controller ,我正在尝试将一个字符串从 View 1 发送到 View 2。

这是我到目前为止所得到的:

override func prepare(for segue: UIStoryboardSegue, sender: Any?)
{
if segue.identifier =="1"
{
let DestViewControl = segue.destination as! ViewController2
DestViewController.count = 9
}
}

Count 是 View 2 中的一个变量。到目前为止效果很好。 但是,如果我想自动更改 View 2 中标签中的文本,如 DestViewController.lb_ExLabem.text = "test",我会收到 fatal error “在展开可选值时意外发现 nil”。

如果您有任何想法,请告诉我。

谢谢

最佳答案

在 segue 之前,outlet 为 nil(因为未加载 View )。

在 DestViewController 中,您应该创建一个变量来存储文本:

class ViewController2{
    @IBOutlet weak var your_label: UILabel!
    var label_tex=String()
}

在 prepareForSegue 中启动它:

override func prepare(for segue: UIStoryboardSegue, sender: Any?){
    if segue.identifier =="1"{
        let DestViewControl=segue.destination as! ViewController2
        DestViewController.label_tex="9"
    }
}

最后在 ViewController2 中,在加载 View 时更改标签文本(并且您的 socket 不再为 nil):

override func viewWillAppear(_ animated: Bool){
    your_label.text=label_tex
}

关于ios - Xcode 8 - 意外发现 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40680924/

相关文章:

swift - 从 UIImagePicker 上传图片到 Firebase

ios - 两种不同类别的本地通知

ios - 同时执行cornerRadius和约束动画

ios - Swift/XCode - AdMob 在 dismissViewController 期间插入

ios - 如何使用 slider 更改 UICollectionViewCell 的框架?

ios - 在 Swift Parse SDK 中使用 Pointer<_User> 进行查询

swift - IOS PDFKit - 注释内容仅在选中时可见

iphone - 如何设置 UILabel 以使用 Arial Narrow(以编程方式),就像我们在 Storyboard上所做的那样?

ios - Xcode 中的 Pin 添加约束自动放大我的框架矩形

ios - 在 Xcode 7.2 中仅将 iPhone 应用程序转换为通用应用程序