簡體   English   中英

以編程方式創建UIView子類的實例

[英]Create instance of UIView subclass programmatically

我創建了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中,我也正在以編程方式創建它並且運行良好,因此,如果可能的話,我真的希望不必這樣做。

除了UIView沒有數據源之外,您所做的一切都很好。

有關您想要實現的目標的更多信息將對您有所幫助。

由於我沒有您的CanvasView的定義,因此很難知道出了什么問題。 下面是我在操場上放在一起的東西,向您展示了一種為類設置數據源的方法。

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

編輯:編輯出一些不正確的陳述/假設

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM