У меня есть UIViewController, который имеет следующую реализацию для didSelectItemAtIndexPathВызов UICollectionView # reloadData в UICollectionViewDelegate # CollectionView: didSelectItemAtIndexPath: скрывает все клетки
@interface
id section1Item
NSMutableArray *section2Items
NSMutableArray *section3Items
@end
@implementation
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.section == 0) {
;
} else if (indexPath.section == 1) {
self.section1Item = [self.section2Items objectAtIndex:indexPath.row];
} else { // indexPath.section == 2
id newSection2Item = [self.section3Items objectAtIndex:indexPath.row];
[self.section2Items addObject:newSection2Item];
[self.section3Items removeObject:newSection2Item];
}
[collectionView reloadData];
}
@end
Идея кода является то, что мой CollectionView имеет статический ряд разделов и наклеивания на предмет в разделе 3 перемещает элемент в раздел 2, а нажатие на элемент в разделе 2 делает его предметом в разделе 1.
Однако, как только я внес изменения в свою структуру данных (section1Item, section2Items и section3Items), и вызвать reloadData, все мои UICollect ionView клетки исчезают. Несколько симптомов выпуска
- После вызова reloadData не удаляются мои методы dataSource. Я попытался поставить точку останова в моей реализации numberOfSectionsInCollectionView и collectionView: numberOfItemsInSection, но они не попадают.
- Я попытался отлаживать с помощью RevealApp, и я узнал, что после вызова reloadData у всех моих UICollectionViewCell есть их скрытое свойство, установленное в «YES», хотя у меня нет кода в моей кодовой базе, вызывающей .hidden = YES;
- Я также попытался переопределить UICollectionViewCell # setHidden, чтобы определить, что (если есть) часть оболочки UIKit вызывает его, и снова не было триггеров точки останова.
Информация об инструменте: Я работаю с XCode5-DP6 на симуляторе iOS7.
UPDATE: My UICollectionView отображает все ячейки правильно при первом рендеринге.
i supect, если ваши методы источника данных вообще не вызываются, ваш коллекционный образ как-то ничто. – bhawesh
@BKC Я обновил свой вопрос, но collectionView не равен нулю, потому что мой первоначальный рендеринг выполняется правильно. –
Существует решение, размещенное в другом потоке, который работал для меня - http://stackoverflow.com/a/14804429 –