在尝试设置文本时,UILabel意外地发现了nil

时间:2018-03-27 06:50:58

标签: ios swift

我正在以编程方式创建一个UIView,它正在自己的init方法中从一个单独的类中的nib加载:

@IBOutlet weak var label: UILabel! 

override init (frame: CGRect) {
     super.init(frame: frame)
     let xibView = UINib(nibName: "aView", bundle: nil).instantiate(withOwner: nil, options: nil)[0] as! UIView
     self.addSubview(xibView)
}

在另一个课程中,我正在调用我的UIView类并尝试将文本设置为我的标签:

self.aView = AView()
self.aView?.frame = CGRect(x: 0, y: 0, width: 
self.aView?.label.text = "Sample Text"
self.view.bounds.size.width, height: 200)
self.pageScrollView.addSubview(self.aView!)

每当我尝试将“Sample Text”设置为我的UILabel时,我都会收到错误:

Optional unexpectedly found nil while attempting to unwrap

因为这是从它的nib加载的,因为视图还没有被绘制到视图中,所以它无法将文本设置为label属性?如果是这样,我该如何解决这个问题?

3 个答案:

答案 0 :(得分:0)

在大多数情况下,此消息会显示(相对于IBOutlet

  

尝试打开时可选意外发现nil

在界面构建器中未连接IBOutlet时。试着这样做。应该工作。

答案 1 :(得分:0)

似乎您的aView未被保留。所以我担心ARC会为你发布它。

我认为你应该在某个地方添加一个强大的AView引用,也许是因为你还没有将它添加到超级视图中。

或许您的标签尚未链接到您的XIB文件。

答案 2 :(得分:0)

thtyh

您无法访问IBOutlets,就像您只通过创建AView()的对象来访问其他变量一样!!!!!