ios - source - UICollectionView y bloqueo de vista suplementaria
uicollectionview swift 3 programmatically (1)
Si está usando un diseño personalizado en su vista de colección, verifique si su fuente de datos es nula en:
- (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect
El resultado debería verse más o menos así:
- (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect
if (self.collectionView.dataSource != nil) {
// Your layout code
return array;
}
return nil;
}
Este cambio resuelve el siguiente problema:
- Fallo de aserción en - [UICollectionView _createPreparedSupplementaryViewForElementOfKind: atIndexPath: withLayoutAttributes: applyAttributes:]
También puede consultar los siguientes temas, sin embargo, no resolvieron nada en mi caso: UICollectionView y Supplementary View (encabezado)
Eliminar espacio vacío, si el encabezado de sección está oculto en UICollectionView
Espero que te ayude, y no perderás tanto tiempo como yo. @eeeee gracias por apuntarme en la dirección correcta.
Tengo un UICollectioView que funciona bien. Hay 2 formas de llegar a esta página.
- aunque la aplicación.
- toque en notificación de inserción.
Todo funciona bien excepto un caso.
si el usuario está en el chat y luego sale de la aplicación (botón de inicio), entonces recibe una notificación de inserción que presiona y la aplicación falla.
choque:
2015-09-25 10: 28: 15.140 Quest [298: 16922] * Error de aserción en - [UICollectionView _createPreparedSupplementaryViewForElementOfKind: atIndexPath: withLayoutAttributes: applyAttributes:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit/ UIKit-3505.16 / UICollectionView.m: 1519 2015-09-25 10: 28: 15.146 Quest [298: 16922] * Aplicación de finalización debido a excepción no detectada ''NSInternalInconsistencyException'', razón por la que ''UICollectionView dataSource no está configurado'' *** Primer lanzamiento llamar pila: (0x1828b4f5c 0x1973b7f80 0x1828b4e2c 0x1837a3f3c 0x187f97a38 0x187e6ebd4 0x187e6fb54 0x187e69b88 0x187e0700c 0x18760df14 0x187608b20 0x1876089e0 0x18760807c 0x187607dd0 0x1880c0bd4 0x18286c48c 0x18286bdc4 0x182869d4c 0x182798dc0 0x18d8ec088 0x187e72f60 0x100215590 0x197be28b8) libc ++ abi.dylib: termina con excepción no detectada de tipo NSException
código en el controlador de inserción:
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) {
let home = storyboard.instantiateViewControllerWithIdentifier("home") as! HomeViewController
let chat = storyboard.instantiateViewControllerWithIdentifier("chat") as! ChatViewController
var controllers : [UIViewController] = [login, chat]
NotificationManager.handleNotification(userInfo, controllers: &controllers, storyboard: storyboard)
navC.viewControllers = controllers
self.window?.makeKeyAndVisible()
}
código de configuración de vista colectiva
@IBOutlet weak var chatCollectionView: UICollectionView! {
didSet {
chatCollectionView.registerNib(UINib(nibName: "ChatTimeStampCollectionViewCell", bundle: nil), forCellWithReuseIdentifier: "ChatTimeStampCell")
chatCollectionView.registerNib(UINib(nibName: "ChatReceiverCollectionViewCell", bundle: nil), forCellWithReuseIdentifier: "ChatReceiverCell")
chatCollectionView.registerNib(UINib(nibName: "ChatSenderCollectionViewCell", bundle: nil), forCellWithReuseIdentifier: "ChatSenderCell")
chatCollectionView.registerNib(UINib(nibName: "ChatHeaderCollectionReusableView", bundle: nil), forSupplementaryViewOfKind: UICollectionElementKindSectionHeader, withReuseIdentifier: "ChatHeaderCell")
chatCollectionView.dataSource = self
chatCollectionView.delegate = self
}
}