我为tableView使用自定义dataSource对象:
class MyDataSource: NSObject, UITableViewDataSource {
// ...
}
在此代码中正常工作:
class ViewController: UIViewController {
@IBOutlet weak var tableView: UITableView!
// Declare as stored property
let dataSource = MyDataSource()
override func viewDidLoad() {
super.viewDidLoad()
tableView.dataSource = dataSource
}
}
但是在此代码中,tableView不显示任何内容(= {MyDataSource
方法未调用):
class ViewController: UIViewController {
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
// Declare as local variable
let dataSource = MyDataSource()
tableView.dataSource = dataSource
}
}
我的问题是:
MyDataSource
声明为存储属性?答案 0 :(得分:4)
问题是,如果您在viewDidLoad
中声明数据源常量,则只要此方法中的代码运行,表视图就会为您的自定义数据源提供引用。因此,viewDidLoad
返回时,数据源将丢失。