意外地在 prepareForSegue 中发现了 nil IBOutlet [英] Unexpectedly found nil IBOutlet in prepareForSegue

查看:24
本文介绍了意外地在 prepareForSegue 中发现了 nil IBOutlet的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个详细信息视图控制器,我想将标签文本设置为使用 indexPath 行从数组中获取的值.

I have a detail view controller, and I would like to set the label text to a value taken from an array using an indexPath row.

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if(segue.identifier == "showView"){
        let detailVC: DetailViewController = segue.destinationViewController as! DetailViewController
        let indexPath = self.MainTableView.indexPathForSelectedRow!
        detailVC.label.text = "Test"
        self.MainTableView.deselectRowAtIndexPath(indexPath, animated: true)
        }
}

我不断收到致命错误:在解开可选值时意外发现 nil.我尝试将 detailVC.label.text = "Test" 切换为 detailVC.label.text = names[indexPath.row] 但我每次都遇到相同的错误.

I keep getting a fatal error: unexpectedly found nil while unwrapping an optional value. I have tried switching detailVC.label.text = "Test" to detailVC.label.text = names[indexPath.row] but I keep getting the same error every time.

我使用了相同的代码行来更改单元格的标签文本,没有错误,但是对于位于空白视图中心的这个标签,我似乎无法正确理解?关于需要改变什么的任何想法?

I used the same lines of code for changing the cell's label text, with no errors, but for this label in the center of a blank view I cannot seem to get it right? Any thoughts on what needs to be changed?

顺便说一下,detail view controller中的label是@IBOutlet weak var label: UILabel!

By the way, the label in the detail view controller is @IBOutlet weak var label: UILabel!

推荐答案

您不能在 prepareForSegue 中访问 DetailViewControllerIBOutlets,因为它们是尚未连接.

You cannot access IBOutlets of DetailViewController in prepareForSegue because they are not connected yet.

正如评论中提到的,在 DetailViewController 中创建一个 String 属性,在 prepareForSegue 中设置它并设置 text DetailViewControllerviewDidLoadviewWillAppear 中标签的属性.

As mentioned in the comments create a String property in DetailViewController, set it in prepareForSegue and set the text property of the label in viewDidLoad or viewWillAppear of DetailViewController.

这篇关于意外地在 prepareForSegue 中发现了 nil IBOutlet的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆