我正在以编程方式创建一个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属性?如果是这样,我该如何解决这个问题?
答案 0 :(得分:0)
在大多数情况下,此消息会显示(相对于IBOutlet
)
尝试打开时可选意外发现nil
在界面构建器中未连接IBOutlet
时。试着这样做。应该工作。
答案 1 :(得分:0)
似乎您的aView
未被保留。所以我担心ARC会为你发布它。
我认为你应该在某个地方添加一个强大的AView
引用,也许是因为你还没有将它添加到超级视图中。
或许您的标签尚未链接到您的XIB文件。
答案 2 :(得分:0)
thtyh
您无法访问IBOutlets,就像您只通过创建AView()的对象来访问其他变量一样!!!!!