Swift - 以编程方式创建UIImageView时出现问题

时间:2016-09-24 18:00:22

标签: ios swift

我正在为UICollectionViewCell创建子类,这就是我的代码看起来像

    var homeImageView : UIImageView!

    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)!
        self.configure()
    }

    override init(frame: CGRect) {
        super.init(frame: frame)
        self.configure()
    }

    func configure () {
        homeImageView.translatesAutoresizingMaskIntoConstraints = false
        self.addSubview(homeImageView)

        self.setupConstraints()
    }

    func setupConstraints () {
        self.addConstraints([
            self.topAnchor.constraintEqualToAnchor(homeImageView.topAnchor),
            self.leftAnchor.constraintEqualToAnchor(homeImageView.leftAnchor),
            self.rightAnchor.constraintEqualToAnchor(homeImageView.rightAnchor),
            self.bottomAnchor.constraintEqualToAnchor(homeImageView.bottomAnchor)
            ])
    }

我的应用崩溃了,我在这一行收到错误消息

homeImageView.translatesAutoresizingMaskIntoConstraints = false

错误消息

  

致命错误:在解包可选值时意外发现nil

造成这种情况的原因是什么?我已经尝试将图像和帧分配给imageView,但应用程序仍然崩溃并给出相同的错误。

在Obj-c中,我只使用alloc init,将translatesAutoresizingMaskIntoConstraints设置为NO,添加为子视图并设置其约束,它将起作用。为什么这不起作用?我做错了什么?

1 个答案:

答案 0 :(得分:2)

您永远不会创建UIImageView

替换:

var homeImageView: UIImageView!

使用:

let homeImageView = UIImageView()