我正在尝试在自己的自定义类中实现Tableview协议。我的目的是开发一个 TableView 库。
我的示例类如下所示
open class TempTableAdapter : NSObject, UITableViewDataSource, UITableViewDelegate{
open var listTable : UITableView!
init(listTable:UITableView) {
super.init()
self.listTable = listTable
self.listTable.dataSource = self
self.listTable.delegate = self
}
open func numberOfSections(in tableView: UITableView) -> Int {
return 1 ;
}
open func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 10
}
open func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "temp") as! TempCell
let text = "hello"
cell.label.text = text
return cell
}
open func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print ("tapped")
}
}
我的 UI 控制器看起来像这样
class ViewController: UIViewController {
@IBOutlet weak var listTable: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
let adap : TempTableAdapter = TempTableAdapter (listTable: listTable)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
谁能指出我错过了什么? 问题是UITableView
显示默认表,而不是使用我的自定义类。
一旦viewDidLoad
方法退出,适配器就会被释放,因为它是一个局部变量。相反,请使其成为视图控制器的属性:
let adapter: TempTableAdapter!
override func viewDidLoad() {
super.viewDidLoad()
adapter = TempTableAdapter (listTable: listTable)
}
希望这有帮助!祝你好运!