Что касается первого вопроса, вы можете фактически использовать один и тот же 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)