今天写个tableView
,在创建 cell
时有个警告:
说这个cell == nil
的判断总是返回false
而且,detailTextLabel
不显示
查阅资料后发现:
tableView.dequeueReusableCell(withIdentifier: "cellId")
和 tableView.dequeueReusableCell(withIdentifier: "cellId", for: indexPath)
这两种创建方式是有 区别的
- 前者不需要注册,但是必须对获取回来的
cell
进行判断是否为空,若空则手动创建新的cell
; 后者必须注册,但返回的cell
可省略空值判断的步骤,因为无可复用cell
时runtime
将使用注册时提供的资源去新建一个cell
并返回。 - 若使用
nib
,使用registerNib
注册,dequeue
时会调用cell
的func awakeFromNib()
; 不使用nib
,使用registerClass
注册,dequeue
时会调用cell
的init(style: UITableViewCell.CellStyle, reuseIdentifier: String?)