[英]UIImageView with IBOutlet in Swift to see it in the Interface Builder
当我像这样将图像插入到视图中时,它将起作用:
func loadSomeImage() {
var imageView = UIImageView(frame: CGRectMake(100, 150, 150, 150))
var image = UIImage(named: "myImage.jpg")
imageView.image = image
self.view.addSubview(imageView)
}
我的这段代码的问题是,界面生成器中未显示ImageView。
但是,当我编写此代码时,出现错误:
@IBOutlet weak var imageView: UIImageView
func loadSomeImage() {
self.imageView = UIImageView(frame: CGRectMake(100, 150, 150, 150))
var image = UIImage(named: "myImage.jpg")
imageView.image = image
self.view.addSubview(imageView)
}
致命错误:解开Optional值时意外发现nil
这是为什么? 我可以插入一个在Interface Builder中显示但具有我自己的代码实现的图像来更改Attribute Inspector不能更改的某些功能吗?
谢谢你的帮助!
您的代码的问题在于,有两个不同的UIImageView实例。 一个是通过界面生成器创建的,另一个是通过代码创建的。
self.imageView = UIImageView(frame: CGRectMake(100, 150, 150, 150))
这将创建另一个UIImageView实例,因此它与您在界面生成器上放置的imageView不同。 只需删除这一行代码即可。 另外,如果您使用的是XIB,则无需再次添加addSubview。
将代码优化为:
@IBOutlet weak var imageView: UIImageView
func loadSomeImage() {
var image = UIImage(named: "myImage.jpg")
self.imageView.image = image
}
这应该足够了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.