簡體   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