我有一个tableview,它的委托和数据源属性应分别从InsertIntoTableViewDelegate
和InsertIntoTableViewDatasource
类设置。但是,我的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()
}
为什么会这样?
答案 0 :(得分:2)
UITableView
不会保留其数据源,因此只要viewDidLoad
函数结束,您的数据源就会被释放。
您需要在视图控制器中将对数据源的引用保存为属性。代表也一样。