实现UITableViewDataSource的类始终为null

时间:2016-01-27 19:25:00

标签: ios swift uitableview

我有一个tableview,它的委托和数据源属性应分别从InsertIntoTableViewDelegateInsertIntoTableViewDatasource类设置。但是,我的InsertIntoTableViewDatasource课程始终返回null

以下是代码:

class InsertIntoTableViewDatasource: NSObject,UITableViewDataSource {

    var data:NSMutableArray

    init(With data: NSMutableArray){
        self.data = data
    }


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

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCellWithIdentifier("rowCell", forIndexPath: indexPath)
        cell.textLabel?.text = data[indexPath.row] as? String
        return cell
    }
}

以下是如何设置tableview:

override func viewDidLoad() {
    super.viewDidLoad()
    self.title = "Testing"
    tableView.dataSource = InsertIntoTableViewDatasource(With: data)
    tableView.delegate = InsertIntoTableViewDelegate()
}

为什么会这样?

1 个答案:

答案 0 :(得分:2)

UITableView不会保留其数据源,因此只要viewDidLoad函数结束,您的数据源就会被释放。

您需要在视图控制器中将对数据源的引用保存为属性。代表也一样。