Должен ли я создать класс UITableViewCell для каждой таблицы в моем приложении? - PullRequest
0 голосов
/ 22 января 2020

Привет, я новичок в iOS разработке, я использую swift 5 на Xcode 11.0 и знаю, как создать табличное представление и отобразить данные, но у меня есть несколько вопросов, связанных с чистым кодом и лучшими практиками:

1- Должен ли я создать класс UITableViewCell для каждой ячейки в той же таблице? Или один класс для всех ячеек в одной таблице?

2- Могу ли я использовать один и тот же класс UITableViewCell для разных таблиц на разных страницах?

Я просмотрел несколько онлайн-уроков, но все они просто объясняют как создать таблицу и не go в столько деталей.

1 Ответ

0 голосов
/ 22 января 2020

Что касается первого вопроса, вы можете фактически использовать один и тот же UITabelViewCell для разных ячеек, это всего лишь вопрос о том, какую часть дизайна они разделяют и сколько кода вам придется повторять, если вы их различаете.

Да, на самом деле, если ваш UITabelViewCell используется в разных TableViews, вам нужно будет вывести свою ячейку наружу, то есть вам нужно поместить ее вне TableView в Xib или создать программно, а затем зарегистрировать эту ячейку, как эта, в каждом TableView, который вы будете использовать. используйте его.

//Created programmatically
tableView.register(UITableViewCell.self, forCellReuseIdentifier: "cell-identifier")

//From a Xib
tableView.register(UINib(nibName: "Nib-identifier", bundle: nil), forCellReuseIdentifier: "cell-identifier")

Примечание: Поместите идентификатор в переменную stati c внутри класса (также ваш кончик, если он у вас есть) следующим образом:

//  https://gist.github.com/JCTec/e64e34e204a6bb99ef92f73b2ee0ee7d
//  String+LoadNib.swift
//  Created by Juan Carlos Estevez on 17/12/19.
extension String {
    /// Carga un Archivo Nib con el nombre de la cadena de texto.
    ///
    /// - Parameter bundle: Bundle a agregar.
    /// - Returns: UINib.
    func loadNib(bundle: Bundle? = nil) -> UINib? {
        return UINib(nibName: self, bundle: bundle)
    }
}


class MyTableViewCell: UITableViewCell {
    static let identifier: String = "cell-identifier"
    static var nib: UINib! = {
        return "nib-identifier".loadNib()
    }()
}

//Use it like this
//Created programmatically
tableView.register(MyTableViewCell.self, forCellReuseIdentifier: MyTableViewCell.identifier)

//From a Xib
tableView.register(MyTableViewCell.nib, forCellReuseIdentifier: MyTableViewCell.identifier)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...