swift tableview委托方法没有在另一个类中响应

时间:2017-04-19 09:14:15

标签: ios swift mvvm delegates tableview

我创建了一个名为xxxtableviewdelegate的新类,我把uitableviewdelgate和uitableviewdatasource放到这个类中,之后,我做了

tableView1?.delegate = tableView1Delegate
tableView1?.dataSource = tableView1Delegate

但委托方法

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell

func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath)

没有打电话,请帮帮我

这些是详细代码

let tableView1Delegate = ArticleTableViewDelegate()
    tableView1Delegate.cellIdentifier = cellIdentifier
    tableView1Delegate.headerIdentifier = headerIdentifier
    tableView1Delegate.sectionTitleArray = self.getSectionData()
    tableView1Delegate.cellDatasource = self.getData()

    tableView1 = UITableView(frame: CGRect.init(x: 0, y: 0, width: zkj_width(object: mainScrollView!), height: zkj_height(object: mainScrollView!)), style: .plain)
    mainScrollView?.addSubview(tableView1!)
    tableView1?.delegate = tableView1Delegate
    tableView1?.dataSource = tableView1Delegate
    tableView1?.separatorStyle = .none
    tableView1?.register(ArticleTableViewCell.classForCoder(), forCellReuseIdentifier: cellIdentifier)

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell: ArticleTableViewCell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier!, for: indexPath) as! ArticleTableViewCell
    return cell
}

func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {

    let aCell = cell as! ArticleTableViewCell
    let model: ArticleModel = cellDatasource![indexPath.row] as! ArticleModel
    aCell.setModel(articleModel: model)
}

2 个答案:

答案 0 :(得分:2)

看起来tableView1Delegate有范围问题,请确保它被声明为类实例而不是函数内部。

class YOUR_CONTROLLER {

 var tableView1Delegate : xxxtableviewdelegate

 func YOUR_FUNCTION {
   tableView1 = xxxtableviewdelegate()
   tableView1?.delegate = tableView1Delegate
   tableView1?.dataSource = tableView1Delegate
 }

}

答案 1 :(得分:0)

创建xxxtableviewdelegate类的对象。并将委托分配给该对象。

var object = xxxtableviewdelegate()
yourTableview.datasourse = object
yourTableview.delegate = object

你应该已经在你的类中实现了UITableViewDataSource,UITableViewDelegate协议。

class xxxtableviewdelegate: NSObject,UITableViewDataSource,UITableViewDelegate {
}