【发布时间】:2013-09-24 19:57:15
【问题描述】:
我有一个 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 单元格都会消失。问题的一些症状
- 在调用 reloadData 之后,我的 dataSource 方法都没有被调用。我尝试在 numberOfSectionsInCollectionView 和 collectionView:numberOfItemsInSection 的实现中放置一个断点,但它们没有被命中。
- 我尝试使用 RevealApp 进行调试,我发现在调用 reloadData 之后,我的所有 UICollectionViewCell 的隐藏属性都设置为“YES”,即使我的代码库中没有任何代码调用 .hidden = YES;
- 我还尝试覆盖 UICollectionViewCell#setHidden 以检测 UIKit 框架的哪个部分(如果有)调用它,并且再次没有断点触发器。
工具详情:我在 iOS7 模拟器上使用 XCode5-DP6。
更新:我的 UICollectionView 在第一次渲染时正确显示所有单元格。
【问题讨论】:
-
我怀疑如果您的数据源方法根本没有被调用,这意味着您的 collectionview 本身在某种程度上是 nil。
-
@BKC 我更新了我的问题,但 collectionView 不是零,因为我的初始渲染发生正确。
-
在另一个线程中发布了一个对我有用的解决方案 - stackoverflow.com/a/14804429
标签: ios objective-c ios7