如何像 UITableDataSource 一样为我的 class 创建 DataSource?
How create DataSource for my class like UITableDataSource?
我有一个 class GraphView(xib + class)。带有标签和其他 UI 元素的图表视图。
我需要为此 class 创建数据源协议,它是在 UITableView 中实现的,如 UITableDataSource。
这需要更舒适地处理数据,我想将其加载到我的 GraphView。
如果你知道怎么做或者有link这个问题的解决方法,请帮助我。
感谢所有问题!
它会像
protocol GraphDataSource {
func Graph(_ graph:GraphView , row:Int)->UIView
}
protocol GraphDelegate {
func Graph(_ graph:GraphView ,didSelect row:Int)
}
class GraphView:UIView {
weak open var dataSource:GraphDataSource?
weak open var delegate:GraphDelegate?
func configureHere() {
let v = dataSource?.Graph(self, row: 0)
delegate?.Graph(self, didSelect: 0)
}
}
class ViewController: UIViewController , GraphDataSource , GraphDelegate {
let g = GraphView()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
g.delegate = self
g.dataSource = self
}
func Graph(_ graph: GraphView, didSelect row: Int) {
}
func Graph(_ graph: GraphView, row: Int) -> UIView {
}
}
创建自定义数据源就像委托模式一样。
protocol GraphViewDataSource: class {
func numberOfRow(for graph: GraphView) -> Int
}
class GraphView {
weak var dataSource: GraphViewDataSource?
init() {
let numberOfRow = dataSource?.numberOfRow(for: self)
}
}
注意:不要忘记将 dataSource
属性 设置为 weak
以避免引用循环(这就是为什么 GraphViewDataSource
需要限制为 class
).
我有一个 class GraphView(xib + class)。带有标签和其他 UI 元素的图表视图。 我需要为此 class 创建数据源协议,它是在 UITableView 中实现的,如 UITableDataSource。 这需要更舒适地处理数据,我想将其加载到我的 GraphView。
如果你知道怎么做或者有link这个问题的解决方法,请帮助我。 感谢所有问题!
它会像
protocol GraphDataSource {
func Graph(_ graph:GraphView , row:Int)->UIView
}
protocol GraphDelegate {
func Graph(_ graph:GraphView ,didSelect row:Int)
}
class GraphView:UIView {
weak open var dataSource:GraphDataSource?
weak open var delegate:GraphDelegate?
func configureHere() {
let v = dataSource?.Graph(self, row: 0)
delegate?.Graph(self, didSelect: 0)
}
}
class ViewController: UIViewController , GraphDataSource , GraphDelegate {
let g = GraphView()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
g.delegate = self
g.dataSource = self
}
func Graph(_ graph: GraphView, didSelect row: Int) {
}
func Graph(_ graph: GraphView, row: Int) -> UIView {
}
}
创建自定义数据源就像委托模式一样。
protocol GraphViewDataSource: class {
func numberOfRow(for graph: GraphView) -> Int
}
class GraphView {
weak var dataSource: GraphViewDataSource?
init() {
let numberOfRow = dataSource?.numberOfRow(for: self)
}
}
注意:不要忘记将 dataSource
属性 设置为 weak
以避免引用循环(这就是为什么 GraphViewDataSource
需要限制为 class
).