繁体   English   中英

Swift中带有IBOutlet的UIImageView,可在Interface Builder中查看

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM