ninguna instancia de UICollectionViewLayoutAttributes para -layoutAttributesForSupplementaryElementOfKind:
El título es el error que obtengo y no tengo idea de por qué, pero aquí hay información, así que espero que alguien aquí pueda dilucidarme.
He subclasificadoUICollectionViewFlowLayout
ya que esto me ahorra calcular los marcos para la celda (¿quizás esto es un problema?) enprepareLayout
. Entonces uso elUICollectionViewLayoutAttributes
información para calcular una vista complementaria que sobre la pone, obtengo el diseño que deseo.
yo sueloperformBatchUpdates:completion:
para agregar, eliminar y actualizar la vista. La inserción funciona bien, sin embargo, la eliminación de elementos es cuando aparece el error que se muestra en el título.
Entonces sé por qué ocurre el error, pero no sépor qué debería estar sucediendo. Para aclarar con un ejemplo pasando por un escenario que causa el problema
Comience con 1 elemento con 1 vista complementaria 1 secciónAgregue dos elementos más (prepareLayout
ve 3 elementos con 3 vistas complementarias)Eliminar elemento (prepareLayout
ve 2 vistas con 2 vistas suplementarias)layoutAttributesForSupplementaryViewOfKind:atIndexPath:
se llama pidiendo atributos para la ruta de índice consección: 0 y artículo: 2Se bloquea porque solicitó atributos para una tercera vista suplementaria, aunque anteriormente llamó preparar el diseño configurando 2 elementos y 2 vistas suplementariasAlza las manos con resignación y desesperaciónasí que la función ofensiva por lo que puedo decir es:
- (UICollectionViewLayoutAttributes *)layoutAttributesForSupplementaryViewOfKind:(NSString *)elementKind atIndexPath:(NSIndexPath *)indexPath
{
return self.layoutInfo[elementKind][indexPath];
}
que por supuesto se llama automáticamente por la red interna deUICollectionView
así que no tengo idea de por qué está pidiendo esa vista complementaria en esa ruta de índice.
¿Alguien tiene alguna idea? Tal vez es como yo usoperformBatchUpdates:completion:
pero la eliminación funcionó bien hasta agregar vistas adicionales. Puedo proporcionar más código / explicación según sea necesario.