NSProxy和委派

时间:2018-07-23 10:40:00

标签: ios swift uitableview delegation nsproxy

我必须为框架添加一些功能,以为UICollectionView和UITableView构造灵活的数据源。 我上课

ggplot(Distrib, aes(x=Length)) + geom_histogram(binwidth=.5)

我有2个初始化程序。首先与一位代表进行初始化。

import UIKit

public class SimpleTableController: AbstractController,   UITableViewDelegate, UITableViewDataSource {
private weak var tableView: UITableView?
public weak var tableViewDelegate: UITableViewDelegate?
public override var itemModels: [ItemModel] {
    didSet {
        tableView?.reloadData()
    }
}

public init(tableView: UITableView) {
    super.init()

    self.tableView = tableView
    self.cellProvider = tableView

    self.tableView?.delegate = self
    self.tableView?.dataSource = self
}

public init(tableView: UITableView, withDelegateHandler handler:UniversalDelegateHandler){
    super.init()
    handler.addListener(self)
    self.tableView = tableView
    self.cellProvider = tableView
    self.tableView?.delegate = (handler as! UITableViewDelegate)
    self.tableView?.dataSource = self
}



public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return itemModels.count
}

public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    return reuseCell(for: Flexy.Index(section: indexPath.section, item: indexPath.row), from: tableView)
}

public func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    didClickOnItem(on: Flexy.Index(section: indexPath.section, item: indexPath.row))

    tableViewDelegate?.tableView?(tableView, didSelectRowAt: indexPath)
}

public override func responds(to selector: Selector!) -> Bool {
    let haveSelector = super.responds(to: selector)

    if !haveSelector,
        let delegate = tableViewDelegate {
        return delegate.responds(to: selector)
    }
    return haveSelector
}
}

第二个是从NSProxy继承并由几个侦听器和组成的委托处理程序,我可以在tableView的委托中添加。

public init(tableView: UITableView) {
    super.init()

    self.tableView = tableView
    self.cellProvider = tableView

    self.tableView?.delegate = self
    self.tableView?.dataSource = self
}

我必须显示带有委托处理程序的示例。

public init(tableView: UITableView, withDelegateHandler handler:UniversalDelegateHandler){
    super.init()
    handler.addListener(self)
    self.tableView = tableView
    self.cellProvider = tableView
    self.tableView?.delegate = (handler as! UITableViewDelegate)
    self.tableView?.dataSource = self
}

当我运行我的App时,我遇到了这个错误.UniversalDelegateHandler类在Objective-C上写得绝对正确。 this

and this

我什至不做什么。等你。

0 个答案:

没有答案