2013-08-13 2 views
1

Имея загадочную проблему с UICollectionView.UICollectionView Exception Crash

добавить мой взгляд коллекции в моей Tableview клетке так:

UICollectionViewFlowLayout *layout = [UICollectionViewFlowLayout new]; 
       layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; 

       UICollectionView *collection = [[UICollectionView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 100) collectionViewLayout:layout]; 
       [collection setDataSource:self]; 
       [collection setDelegate:self]; 
       [collection setBackgroundColor:[UIColor whiteColor]]; 
       [collection registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"Cell"]; 
       collection.tag = kTagPhotoCollectionView; 
       [cell.contentView addSubview:collection]; 

Я реализует все необходимые делегата и исходные данные методы, и вы можете видеть, я установить источник данных и делегат и внедрили они в моем заголовке.

Когда я иду и нажать UIButton, который отображает UIImagePickerController и сбои приложения с этой ошибкой:

2013-08-13 20:17:02.578 [619:60b] *** Assertion failure in -[PUCollectionView _createPreparedSupplementaryViewForElementOfKind:atIndexPath:withLayoutAttributes:applyAttributes:], /SourceCache/UIKit/UIKit-2891/UICollectionView.m:1397 
2013-08-13 20:17:35.502 Sparky[619:60b] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'UICollectionView dataSource is not set' 
*** First throw call stack: 
(0x30a02ed3 0x3aa2b6c7 0x30a02da5 0x3138c72f 0x3305f647 0x32f4adf9 0x32f47139 0x32eea543 0x32b72feb 0x32b6e817 0x32b6e6a9 0x32b6e0bd 0x32b6decf 0x32b67bfd 0x309cdf71 0x309cb8ff 0x309cbc4b 0x30936541 0x30936323 0x353ca343 0x32f4f8a5 0x5f835 0x3af40ab7) 
libc++abi.dylib: terminating with uncaught exception of type NSException 

ПОЧЕМУ НА ЗЕМЛЕ ?! Он делает мою голову. Я установил источник данных, поэтому я понятия не имею, почему это произойдет. Любая помощь приветствуется, спасибо!

+0

Что такое PUCollectionView? Ошибка ссылается на это, но я не вижу его использования в вашем коде? – rdelmar

+0

Я понятия не имею, что это. Я предполагаю, что его скрытый класс Apple использует за кулисами. –

+0

Если вы закомментируете весь код в методе кнопок, который представляет собой подборщик изображений, он все равно падает? Может быть, ваш диспетчер (делегат коллекции) освобождается? – rdelmar

ответ

5

Я столкнулся с подобной проблемой, но мое приложение потерпело крах после того, как я программным образом вытащил свой UICollectionViewController. В какой-то причине (я думаю, что это просто ошибка в SDK) self.collectionView был жив после того, как его контроллер уничтожить, тем самым вызывая этот отказ:

*** Assertion failure in -[UICollectionView _createPreparedSupplementaryViewForElementOfKind:atIndexPath:withLayoutAttributes:applyAttributes:], /SourceCache/UIKit/UIKit-2935.137/UICollectionView.m:1305 
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'UICollectionView dataSource is not set' 

Решение просто переопределить -dealloc в UICollectionViewController и освободить self.collectionView вручную. ARC-код:

- (void)dealloc { 

    self.collectionView = nil; 
} 

Надеюсь, это сэкономит время для кого-то.

Смежные вопросы