UICollectionView y la vista complementaria crash

Tengo una UICollectioView que funciona bien. Hay 2 forms de llegar a esta página.

  1. aunque la aplicación
  2. toque en la notificación push.

Todo funciona bien excepto un caso.

si el usuario está en el chat y luego sale de la aplicación (button de inicio), recibe una notificación de inserción que lo presiona y la aplicación se bloquea.

choque:

2015-09-25 10: 28: 15.140 Búsqueda [298: 16922] * Falla de aserción en – [UICollectionView _createPrepanetworkingSupplementaryViewForElementOfKind: atIndexPath: withLayoutAttributes: applyAttributes:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit/ UIKit-3505.16 / UICollectionView.m: 1519 2015-09-25 10: 28: 15.146 Búsqueda [298: 16922] * Aplicación de finalización debido a la exception no detectada 'NSInternalInconsistencyException', motivo: 'UICollectionView dataSource no está configurado' *** Primer lanzamiento llamar stack: (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 exception no detectada de tipo NSException

código en el manejador de empuje:

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 configuration de collectioview

 @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 } } 

Si está utilizando layout personalizado en la vista de colección, compruebe si su fuente de datos es nula en:

 - (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect 

El resultado debería parecerse a esto:

 - (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect if (self.collectionView.dataSource != nil) { // Your layout code return array; } return nil; } 

Este cambio resuelve el siguiente problema:

  • Error de aserción en – [UICollectionView _createPrepanetworkingSupplementaryViewForElementOfKind: atIndexPath: withLayoutAttributes: applyAttributes:]

También puede consultar los siguientes temas, pero no resolvieron nada en mi caso: UICollectionView y la Vista suplementaria (encabezado)

Eliminando espacio vacío, si el encabezado de la sección está oculto en UICollectionView

Espero que te ayude, y no perderás tanto time como yo. @eeeee gracias por señalarme en la dirección correcta.