以编程方式添加UIImage时,不能在类型上使用实例成员

时间:2018-03-01 11:05:11

标签: swift xcode uikit

我是斯威夫特的新手,我仍然试图了解很多事情。我为陨石做了一堂课:

class Meteorite {
        var width: Int,
            height: Int,
            x: Int,
            y : Int

        init(width: Int, height: Int, x: Int, y: Int) {
            self.width = width
            self.height = height
            self.x = x
            self.y = y

            let image = UIImage(named: "square")
            let imageView = UIImageView(image: image!)
            imageView.frame = CGRect(x: self.x, y: self.y, width: self.width, height: self.height)
            view.addSubview(imageView)
        }
    }

...而我正试图让流星通过UIImage View元素出现。但是,就行:view.addSubview(imageView)

我不断抛出错误:

  

实例成员'view'不能用于'ViewController'类型

我可能做错了,但是这个类是在ViewController类中定义的,它是UIViewController的子类。我在网上找不到任何对我的情况有意义的东西。非常感谢帮助:)

1 个答案:

答案 0 :(得分:0)

Meteorite可以嵌套在UIViewController子类中,但您仍然在view类的上下文中引用Meteorite属性。实际上,您正在向不存在的变量发送消息。

这里要做的是在元素的init之外移动视图层次结构的任何操作。这应该由视图控制器处理,而不是子视图。

我建议在其初始化中配置Meteorite对象,但将其添加到视图控制器的视图中,比如视图控制器的viewDidLoad:方法。