Я использую файл xib для создания пользовательской ячейки. Идентификатор повторного использования устанавливается в xib-файле. Тогда у меня есть ленивый var, который я использую для регистрации пера только один раз:
private lazy var registerNib: Bool = {
let nib = UINib(nibName: "CustomTableViewCell", bundle: nil)
self.tableView.register(nib, forCellReuseIdentifier: "Custom")
return true
}()
Во время создания ячеек я просто использовал ленивую переменную var и вычеркнул ячейку из табличного представления, используя тот же идентификатор повторного использования, что и в xib-файле:
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let _ = self.registerNib
let cell = tableView.dequeueReusableCell(withIdentifier: "Custom") as! CustomCell
return cell
}
Но развертывание не удается, и приложение вылетает.
tableView.dequeueReusableCell возвращает nil
по какой-то причине ....