import UIKit
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {//表格视图数据源协议、表格视图代理协议
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let rect = CGRect(x: 0, y: 40, width: 320, height: 420)//创建一个显示区域
let tableView = UITableView(frame: rect)//初始化一个表格视图,并设置其位置和尺寸
tableView.delegate = self//设置表格视图的代理为当前的视图控制器类
tableView.dataSource = self//设置表格视图的数据源为当前的视图控制器类
self.view.addSubview(tableView)//将表格视图添加到当前视图控制器的根视图中
}
//添加一个代理方法,用来设置表格视图拥有的行数
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 7
}
//添加一个代理方法,用来初始化或复用表格视图中的单元格
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let identifier = "reusedCell"//创建一个字符串,作为单元格的复用标识符
//单元格的标识符可以看作是一种复用机制,此方法可以从所有已经开辟内存的单元格里面,选择一个具有同样标识符的、空闲的单元格
var cell = tableView.dequeueReusableCell(withIdentifier: identifier)
//如果在可重用单元格队列中,没有可以重复使用的单元格,则创建新的单元格。新单元格拥有一个复用标识符
if cell == nil {
cell = UITableViewCell(style: UITableViewCellStyle.subtitle, reuseIdentifier: identifier)
}
cell?.textLabel?.text = "Title Information"//根据当前单元格的行数,从数组中获取对应位置的元素,作为当前单元格的标题文字
let rowNum = indexPath.row//获取当前单元格在段落中的行数
if 1 == rowNum {//如果处于第二行,则设置该单元格背景为黄色
cell?.backgroundColor = UIColor.yellow
} else {
let rect = CGRect(x: 0, y: 0, width: 100, height: 100)
let view = UIView(frame: rect)//初始化一个视图,并设置位置和尺寸
view.backgroundColor = UIColor.brown//设置视图的背景色
cell?.backgroundView = view//将设置好的视图作为单元格背景视图
}
return cell!//返回设置好的单元格对象
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}