У меня есть табличное представление с 3 ячейками, которые представляют собой коллекцию. View 2 имеет такой же дизайн. ячейки в таблице выглядят так
1-ячейка категории (вертикальное представление collectionView)
2 и 3- Ячейка продукта (коллекцияВид по горизонтали)
при прокрутке ячейка категории меняет дизайн на продукт, и то же самое для продукта требуется дизайн ячейки категории
это приводит к отладке Перерыв на UIViewReportBrokenSuperviewChain. на collectionView с тегом 4
я пытался collectionView.collectionViewLayout.invalidateLayout() но все становится еще хуже
tableView(cellForrowAt)(
if indexPath.row == 3{
let cell = self.homeTableView.dequeueReusableCell(withIdentifier: "TableCollectionViewCell") as! TableCollectionViewCell
cell.collectionView.delegate = self
cell.collectionView.dataSource = self
cell.collectionView.tag = 4
cell.collectionView.isScrollEnabled = false
return cell
}
}
collectionView(cellForItemAt){
if collectionView.tag == 4 {
let nib = UINib(nibName: "ProductCell", bundle: nil)
collectionView.register(nib, forCellWithReuseIdentifier: "ProductCell")
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "ProductCell", for: indexPath) as! ProductCell
cell.setup(product: self.newProducts[indexPath.row])
let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
layout.sectionInset = UIEdgeInsets(top: 20, left: 0, bottom: 10, right: 0)
layout.minimumInteritemSpacing = 10
layout.minimumLineSpacing = 10
collectionView.collectionViewLayout = layout
return cell
}
}





Вы не должны регистрировать свой Nib с помощью collectionView каждый раз, когда вы извлекаете ячейку. Вы должны зарегистрировать все типы ячеек, которые вы планируете использовать с collectionView, когда он создан/настроен, или, по крайней мере, проверить, зарегистрирована ли эта ячейка уже или нет.
Точно так же вы не должны изменять макет представления коллекции в коде, используемом для извлечения ячейки. Макет в большинстве случаев устанавливается один раз. В некоторых сложных случаях вы можете захотеть изменить его непосредственно перед отправкой reloadData() в ответ на загружаемые новые данные или некоторые действия пользователя (переход с альбомной на портретную и т. д.).
Изменение макета во время обновления представления коллекции может привести к непредвиденным ошибкам, с которыми вы сталкиваетесь.
Я. создал новую ячейку таблицы с представлением коллекции для категорий, так что теперь 2 ячейки с представлением коллекции и, похоже, это решило проблемы. Спасибо :))
1- Я переместил Nib регистра в tableview cellForRowAt, так как я не могу получить к нему доступ в viewDidLoad 2- удаленное изменение макета такое же, но при прокрутке я получаю ячейки строки 4 в строке 0 и 0 в 4 не только дизайн, но и содержание, как если бы я загрузил продукты в категории collectionView и то же самое для категорий, поскольку я загрузил их в коллекцию продуктов. Я думаю, что это из ячейки Tableview для нумерации строк, но я не понимаю, как это исправить, есть идеи, пожалуйста?