我正在尝试子类化我的UITableViewDatasource, 但是,我的应用程序与EXC_BAD_ACCESS崩溃。 没有解释没有错误消息只是崩溃。 我的DataSource的排序版本看起来像这样。
import UIKit
class DataSource :NSObject, UITableViewDataSource{
var tableView:UITableView
let CellIdentifier = "Cell"
init(tableView : UITableView) {
println("Data Source")
self.tableView = tableView
super.init()
self.tableView.dataSource = self
}
//:MARK UITableViewDataSource
//-----------------------------------------------------------------------------------------//
// Number Of Rows In Tableview
//-----------------------------------------------------------------------------------------//
func tableView(tableView: UITableView?, numberOfRowsInSection section: Int) -> Int
{
return 10
}
//-----------------------------------------------------------------------------------------//
// Cell For Row At Index Path
//-----------------------------------------------------------------------------------------//
func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {
let cell = self.tableView.dequeueReusableCellWithIdentifier(CellIdentifier, forIndexPath: indexPath) as UITableViewCell
cell.textLabel.text = "Title of Row: #\(indexPath.row)"
return cell
}
}
正如您所见,没有什么特别之处,此代码在Playground中运行良好
以下是我对DataSource的调用
import UIKit
class ListEntriesViewController :UITableViewController{
override func viewDidLoad() {
println("View Did Load")
var data = DataSource(tableView: self.tableView)
self.tableView.dataSource = data
}
}
我错过了什么,为什么这段代码适用于Playground但不适用于我的应用程序。
谢谢
答案 0 :(得分:2)
表视图不保留数据源。 viewDidLoad后立即销毁该对象。您需要将其存储在属性中。
另请注意, UITableViewDataSource 是协议,而不是类。因此它不能被子类化。