UITableView中单元格复用有两种方法,dequeueReusableCell与dequeueReusableCell:indexPath.
<pre><code>` open func dequeueReusableCell(withIdentifier identifier: String) -> UITableViewCell? // Used by the delegate to acquire an already allocated cell, in lieu of allocating a new one.
@available(iOS 6.0, *)
open func dequeueReusableCell(withIdentifier identifier: String, for indexPath: IndexPath) -> UITableViewCell // newer dequeue method guarantees a cell is returned and resized properly, assuming identifier is registered`</code></pre>
① 第一种方法最常用,不管UITableView是否注册,都可以执行以下代码:
<pre><code>var cell:UITableViewCell? = tableView.dequeueReusableCell(withIdentifier: "CustomTableCell") if cell == nil { cell = UITableViewCell.init(style: .default, reuseIdentifier: "CustomTableCell") }
</code></pre>
② 第二种方法要求UITableView必须注册类或者nib文件:
<pre><code>self.tableView.register(UINib.init(nibName: "CustomTableCell", bundle:.main), forCellReuseIdentifier: "CustomTableCell")
</code></pre>
<pre><code>let cell:UITableViewCell = tableView.dequeueReusableCell(withIdentifier: "CustomTableCell", for: indexPath)
</code></pre>
如果注册过,第一种方法的cell == nil判断则不需要执行~
网友评论