Я создал TableView в стандартном ViewController. Проблема в том, что я не могу зарегистрировать новую ячейку. Это всегда приводит к следующей ошибке:
'невозможно удалить из очереди ячейку с идентификатором CustomCell - необходимо зарегистрировать перо или класс для идентификатора или подключить ячейку-прототип в раскадровке'
class ViewController: UIViewController {
var testView = UITableView()
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(testView)
self.testView.register(CustomCell.self, forCellReuseIdentifier: "CellID")
self.testView.dataSource = self
self.testView.delegate = self
}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let item = self.item(at: indexPath)
let cell = tableView.dequeueReusableCell(withIdentifier: "CellID", for: indexPath) as! CustomCell
cell.titleLabel.text = item
cell.coverView.image = UIImage(named: "Swift")
return cell
}
Использование раскадровки не вызовет этой проблемы. Если я создаю ячейку и указываю идентификатор, регистрация работает отлично. Я просто не понимаю это программно
Я пытался зарегистрировать ячейки, используя другой Navigationcontroller: UITableViewController. Это просто работало, потому что я использовал:
self.tableView.register(Cellstest.self, forCellReuseIdentifier: "CellID")
//and not using the created TableView "testView".
//Using self.testView.register leads to the same error
В моем мнении с кодом выше я зарегистрировал ячейки для универсального tableView в UITableViewController вместо моего созданного testView: UITableView.
Если я прав, как я могу просто зарегистрировать новую ячейку для определенного TableView
Если я не прав, как я могу получить доступ к UITableViewController в моем UIViewController. Потому что в первом случае с помощью UIViewController я не могу получить доступ self.tableView.register . Я просто могу зарегистрировать свой собственный TableView self.testView.register