Как настроить пользовательский UITableViewCell только один раз? - PullRequest
0 голосов
/ 08 марта 2019

Учтите, что у нас есть

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 голосов
/ 13 марта 2019

Решение состоит в том, чтобы поместить код конфигурации ячейки в awakeFromNib() внутри ячейки, таким образом, он будет вызываться только один раз.

Как это

override func awakeFromNib() {
    super.awakeFromNib()

    setupCell()
}

private func setupCell() {
    selectionStyle = .none
    backgroundColor = .red
}
0 голосов
/ 08 марта 2019

Создайте функцию внутри вашего класса ячеек.

configure() {
   // setup cell properties here
}

Тогда вам нужно всего лишь написать cell.configure () вместо всех ваших строк установки.

Если вы хотите, чтобы он был еще более универсальным, вы можете поместить эту функцию конфигурации в расширение

extension UITableViewCell {
   func configure() {
     // configure code lines
   }
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...