UITableView не может снять очереди с динамически зарегистрированных ячеек - PullRequest
0 голосов
/ 22 января 2019

Я получаю исключения при попытке удалить многоразовые ячейки.Это прекрасно работает, когда я устанавливаю начальную стрелку сцены, указывающую на сцену с представлением списка, но когда я пытаюсь загрузить сцену во время выполнения, я получаю исключение

', неспособное удалить из очереди ячейку сidentifier SessionListTableViewCell - должен зарегистрировать перо или класс для идентификатора или подключить ячейку прототипа в раскадровке '

Здесь происходит исключение при вызове tableView.dequeueReusableCell

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    guard let cell = tableView.dequeueReusableCell(withIdentifier: "SessionListTableViewCell", for: indexPath) as? SessionListTableViewCell else {
        fatalError("The dequed cell is not an instance of SessionListTableViewCell")
    }

Я уверен, что правильно зарегистрировал тип ячейки в IB.Правильный тип ячейки появляется в IB как дочерний элемент ListViewTableController, а для Content задано значение Dynamic Prototypes.

Это работает, если я установил начальную стрелку сцены так, чтобы она указывала на сцену.Это не работает, если я пытаюсь загрузить ту же сцену во время выполнения.Мой идентификатор ячейки табличного представления, кажется, правильно настроен в IB.

Мне не удалось зарегистрировать тип ячейки в коде, поскольку я получаю сообщение об ошибке компиляции здесь: tableView.register (SessionListTableViewCell.self, forCellWithReuseIdentifier: "SessionListTableViewCell") «Невозможно вызвать« register »со списком аргументовтипа '(SessionListTableViewCell.Type, forCellWithReuseIdentifier: String ”

1 Ответ

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

Я неправильно загружал ViewController из раскадровки.

Вот правильный код на случай, если кто-нибудь еще столкнется с этой проблемой:

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let poseViewController : PoseViewController = storyboard.instantiateViewController(withIdentifier: "Pose Menu") as! PoseViewController
self.present(poseViewController, animated: true, completion: nil)

Сначала вам нужно дать вашему UIViewController идентификатор раскадровки, как показано в этом сообщении: Как мне дать "идентификатор" контроллеру представления в моей раскадровке?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...