如何只配置一次自定义UITableViewCell?

时间:2019-03-08 00:56:39

标签: ios swift uitableview configuration

考虑我们有

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: HomeViewController.episodeTableViewCellIdentifier, for: indexPath) as! EpisodeTableViewCell

        cell.backgroundColor = UIColor.red
        cell.selectionStyle = .none
        cell.titleLabel.text = episodesArray[indexPath.row].title

        return cell
}

如果我想分离单元配置部分(设置backgroundColor和cell selectionStyle),该部分对于所有单元都是相同的,以防止每次执行tableView:cellForRowAt:的代码行都被调用?

2 个答案:

答案 0 :(得分:0)

在单元格类中创建一个函数。

configure() {
   // setup cell properties here
}

然后,您只需要编写cell.configure()来代替所有设置行。

如果您希望它更通用,可以将此配置功能放在扩展中

extension UITableViewCell {
   func configure() {
     // configure code lines
   }
 }

答案 1 :(得分:0)

解决方案是将单元格配置代码放置在Cell内的awakeFromNib()中,这样,它将仅被调用一次。

override func awakeFromNib() {
    super.awakeFromNib()

    setupCell()
}

private func setupCell() {
    selectionStyle = .none
    backgroundColor = .red
}