我有一个UIViewController,它具有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部分中的项目。
但是,一旦我对dataStructure(section1Item,section2Items和section3Items)进行了更改,并调用reloadData,我的所有UICollectionView单元格都会消失。问题的一些症状
工具详情:我在iOS7模拟器上使用XCode5-DP6。
UPDATE:我的UICollectionView在首次渲染时正确显示所有单元格。
答案 0 :(得分:0)
好的偷看,所以我能够找出问题所在。委托(self)是UIViewController
的子类。在init中,我正在分配self.view = viewFromStoryBoard
,其中viewFromStoryBoard由调用者传入,并且是在故事板中设置的。
由于我没有真正使用子类UIViewController
提供的任何功能,我决定切换到子类NSObject
并手动保留指向UICollectionView
的指针。
这解决了我的问题。但是,我不是100%的问题的确切性质。我猜不知怎样覆盖UIViewController的视图并不是它看起来的全部。
答案 1 :(得分:0)
iOS 7和UICollectionView存在很多错误...在我的情况下,reloadData无法正常工作,它可以延迟使用。