Я использую обобщенную функцию для улучшения ячеек таблицы, как показано ниже;
public func registerNib<T: UITableViewCell>(_:T.Type) {
print("Registering.....")
print(T.self)
let nib = UINib(nibName: String(describing: T.self), bundle: nil)
register(nib, forCellReuseIdentifier: String(describing: T.self))
}
И я написал две функции для регистрации ячейки, одну для одной ячейки и одну для нескольких ячеек.
// Регистр с одной ячейкой
func setup<T: UITableViewCell>(cell:T.Type) {
print(cell)
tableView.registerNib(cell)
self.setupParameters(.....)
}
// Регистр с несколькими ячейками
func setup<T: UITableViewCell>(cells:[T.Type]) {
for cell in cells {
print(cell)
tableView.registerNib(cell)
}
self.setupParameters(.....)
}
Для реализации с одной ячейкой вы можете вызвать func, как показано нижеи он будет правильно регистрировать Nib.
self.baseTableView.setup(cell: CompetencyCell.self, rowHeight: 60)
**************
Output:
CompetencyCell
Registering...
CompetencyCell
Но проблема заключается в множественной реализации;
self.baseTableView.setup(cells: [CompetencyCell.self, BehaviorCell.self], rowHeight: 60)
**************
Output:
CompetencyCell
BehaviorCell
Registering...
UITableViewCell
UITableViewCell
Мне действительно интересно, в чем причина, или что я пропускаю?Это похоже на то же поведение, но когда я хочу передать значение T.Type методу RegisterNib, оно превращается в UITableViewCell, и после некоторого момента, конечно, у меня происходит сбой, поскольку он не может найти ячейку.
У вас есть какой-либо совет?Большое спасибо.