- UITableVIew的屬性
- UITableVIew繼承自UIScrollView
- tableView上顯示的內(nèi)容,一般不是通過添加子視圖去顯示,而是通過cell去顯示數(shù)據(jù)
self.tableView = UITableView.init(frame: self.view.bounds)
// 2.添加到界面上
self.view.addSubview(self.tableView!)
// 3.設(shè)置代理(顯示數(shù)據(jù)的核心在協(xié)議里面實現(xiàn),所以要設(shè)置代理)
// 專門負責數(shù)據(jù)的顯示
self.tableView?.dataSource = self
// 4.設(shè)置tabView上cell的高度
self.tableView?.rowHeight = 200
- 因為設(shè)置了代理所以需要實現(xiàn)協(xié)議方法
下面我們來寫協(xié)議方法
注意了協(xié)議里面有兩個方法必須實現(xiàn)
extension ViewController: UITableViewDataSource {
// 一個tableView上可以有多個分組(section),每一組又可以有多行(多個cell);默認情況下tableView只有一個分組
// 1.設(shè)置每一個分組的行數(shù)(cell的個數(shù))
// 有多少個分組調(diào)用多少次(開始的時候)
// 參數(shù)1: 委托
// 參數(shù)2: 當前組的下標(當前是第幾組)(下標0開始)
// 返回值:設(shè)置的cell的個數(shù)
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 10
}
// 2.創(chuàng)建每一行的cell
// 通過上邊的方法設(shè)置的行數(shù),就是當前這個方法每次調(diào)用的次數(shù)
// 要做的事情:a.確定每一行cell的風格 b.確定cell上顯示的內(nèi)容
// 參數(shù)1: 委托
// 參數(shù)2: cell的位置(通過組數(shù)和行數(shù)來確定)(比如說:在第幾組第幾行) section -> 組 , row -> 行
// 返回值:創(chuàng)建的cell
// UITableViewCell只能在tableView上作為cell顯示內(nèi)容
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
// 1.去復用池中查看是否有可以復用的cell;如果有就直接返回可以復用的cell,沒有就返回nil
// 當cell在滾動的時候,滾出了界面以外,那這個cell就會被添加到復用池中
// Identifier的作用是區(qū)分復用池中不同的cell
var cell = tableView.dequeueReusableCellWithIdentifier("cell")
// 2.判斷是否找到可以復用的cell
if cell == nil {
// 如果沒有找到可以復用的cell,就去創(chuàng)建新的cell
// 最多創(chuàng)建一屏的cell的個數(shù)加1或者加2
cell = UITableViewCell.init(style: .Subtitle, reuseIdentifier: "cell")
}else{
print("復用的cell")
}
// 3.刷新數(shù)據(jù)(給cell上顯示的內(nèi)容重新賦值)(如果復用池中有cell就直接拿過來用,但是要刷新數(shù)據(jù))
cell?.textLabel?.text = "第\(indexPath.section)組,第\(indexPath.row)行"
// 4.返回cell
return cell!
}
}