DequeueReusableCellWithReuseIdentifier crash 'не может удалить из вида вид "UICollectionElementKindCell"
Я получаю следующий сбой:
Завершение приложения из-за неотображенного исключения "NSInternalInconsistencyException", причина: "не может удалить вид вида: UICollectionElementKindCell с идентификатором Cell - должен зарегистрировать ниб или класс для идентификатора или подключить ячейку прототипа в раскадровке"
В моем ViewDidLoad есть следующее:
[self.collectionView registerClass:[UICollectionViewCell class]
forCellWithReuseIdentifier:@"Cell"];
И строка, которая выходит из строя, находится в обратном вызове cellForItemAtIndexPath:
UICollectionViewCell *cell = [collectionView
dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath];
Я искал часы, но не могу найти решение. Я попытался подклассифицировать UICollectionViewCell, но получить ту же ошибку.
С точками останова я определил, что строка registerClass выполняется до выполнения обратного вызова dequeueReusableCellWithReuseIdentifier.
Ответы
Ответ 1
У меня была эта проблема, потому что я вызывал registerClass до. Я создавал экземпляр объекта просмотра таблицы. Рабочий код:
self.tableView = [[UITableView alloc] initWithFrame:self.view.frame];
[self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"Cell"];
[self.view addSubview:self.tableView];
self.tableView.delegate = self;
self.tableView.dataSource = self;
[self.tableView reloadData];
Ответ 2
Кроме того, не забудьте разницу между ячейкой (register... forCellWithReuseIdentifier) и дополнительным представлением (register... forSupplementaryViewOfKind).
Я правильно оценивал его с помощью дополнительного типа (верхний/нижний колонтитул), но я случайно зарегистрировал его как тип ячейки. Duh.
Ответ 3
Если вам это случится, в UICollectionViewController
или UITableViewController
сделайте то, что сказал roboffoff, и убедитесь, что ваш Collection View
или Table View
подключен к вашему ресурсу в вашей раскадровке.
Еще одна распространенная ошибка в раскадровке, которую вы забыли дать правильно CollectionID
или CellID
.
Ответ 4
Когда я работал над ячейками коллекции, я написал:
static NSString *identifier = @"cell ";
Внимательно осмотрите в конце строки идентификатора дополнительное пространство. Поняв мою ошибку, я надеюсь, что это кому-то поможет.
Ссылка:
не может удалить вид вида: UICollectionElementKindCell с идентификатором