当前位置: 首页 > 面试题库 >

意外地在prepareForSegue中找到了nil IBOutlet

袁翰池
2023-03-14
问题内容

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

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]但每次都遇到相同的错误。

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

顺便说一句,详细视图控制器中的标签是 @IBOutlet weak var label: UILabel!


问题答案:

您无法访问IBOutletDetailViewControllerprepareForSegue,因为他们还没有连接。

正如在评论中提到建立一个String物业DetailViewController,将其设置在prepareForSegue并设置text标签的财产viewDidLoadviewWillAppearDetailViewController



 类似资料:
  • 致命错误:在展开可选值时意外发现nil。 我相信这很容易修复,但我对此相当陌生--我做错了什么?

  • 我一直试图通过Postgre DB Server运行这个批处理文件,并运行两个不同的sql文件,如下所示: 但是问题来了,有时我会得到下面的命令query1或query2的错误: 这种情况只是偶尔发生,所以我不完全确定为什么会发生。有人能解释为什么会这样,以及这个问题是否有解决办法吗?谢谢! 更新:在实际的Postgre应用程序中尝试打开远程服务器时,我有时也会遇到相同的错误:“出现错误:”服务器

  • 我正试图运行此代码,但不断收到以下错误: 致命错误:在展开可选值时意外发现nil 我不明白这是什么意思,也不明白我为什么要得到它。有什么提示吗?

  • 问题内容: 我在大型代码中发现了一个错误,并将问题简化为以下情况。 尽管在每一步中我都只更改,但是在每一步中我都打印时,它也会更改,因为在第一循环的结尾我将它们分配为相等。我读过这篇文章,但是写了一些,以防我能解决问题,但事实并非如此 问题答案: 问题是,当您将值从分配回时,您实际上并没有将值从传递给,而是实际上是将两个变量指向 同一对象 。 您遇到的问题 解决方案 相反,您将需要复制 值 。使用

  • 对于这些样式,如果我增加宽度,元素将从左侧增长。这意味着getBoundingClientRect()。在我调整宽度后,该元素的右边应该有相同的值。 但是当我使用javascript来增加宽度时,情况就不一样了。为什么不呢? 当鼠标在元素上移动时,我会增加宽度,如下所示: 每次的输出都是不同的。

  • 由于某种原因,这段代码给出了编译错误,有人能解释为什么吗?