以编程方式创建UIView子类的实例

时间:2016-03-06 23:13:52

标签: ios swift

我创建了一个UIView的子类,它只是覆盖了drawRect。为简单起见,我不是在Interface Builder中创建UIView来表示将成为我的子类,而是想在我的UIViewController代码中创建它的实例。

我尝试了以下内容:

canvasView = CanvasView(frame: view.bounds)
canvasView.dataSource = self

以及:

canvasView = UIView(frame: view.bounds) as! CanvasView
canvasView.dataSource = self

但对于他们两个我收到错误..

  

'UIView'类型的值没有成员'dataSource'

解决这个问题的正确方法是什么?我需要在IB中创建UIView吗?它嵌入在UIScrollView中,我也是以编程方式创建并且运行良好,所以如果可能的话,我真的不想这样做。

1 个答案:

答案 0 :(得分:0)

除了UIView没有数据源这一事实外,你做得很好。

有关您想要实现的目标的更多信息在这里会有所帮助。

由于我没有CanvasView的定义,因此很难知道出了什么问题。下面是我在游乐场放置的内容,向您展示了一种可以为您的类设置dataSource的方法。

import UIKit

protocol DataSourceProtocol {
    var data: Any { get set }
}

class DataSource: DataSourceProtocol {
    var data: Any

    init(data: Any) {
        self.data = data
    }
}

class ViewWithDataSource: UIView {
    var dataSource: DataSourceProtocol?
}

let dataSource = DataSource(data: "Some Data")
let myView = ViewWithDataSource(frame: CGRectZero)
myView.dataSource = dataSource

编辑:编辑了一些不正确的陈述/假设