Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/114.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在UICollectionViewDelegatecollectionView:didSelectItemAtIndexPath:中调用UICollectionViewreloadData将隐藏所有单元格_Ios_Objective C_Ios7 - Fatal编程技术网

Ios 在UICollectionViewDelegatecollectionView:didSelectItemAtIndexPath:中调用UICollectionViewreloadData将隐藏所有单元格

Ios 在UICollectionViewDelegatecollectionView:didSelectItemAtIndexPath:中调用UICollectionViewreloadData将隐藏所有单元格,ios,objective-c,ios7,Ios,Objective C,Ios7,我有一个UIViewController,它对didSelectItemAtIndexPath具有以下实现 @interface id section1Item NSMutableArray *section2Items NSMutableArray *section3Items @end @implementation - (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(

我有一个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节中的项目

但是,一旦我对数据结构section1Item、section2Items和section3Items进行更改并调用reloadData,我的所有UICollectionView单元格就会消失。这个问题的几个症状

在重新加载数据调用之后,我的数据源方法中没有一个被调用。我尝试在numberOfSectionsInCollectionView和collectionView的实现中设置断点:numberOfItemsInSection,但它们没有被命中。 我尝试使用RevealApp进行调试,发现在重新加载数据调用后,我所有的UICollectionViewCell都将其隐藏属性设置为“是”,即使我的代码库调用中没有任何代码。hidden=YES; 我还尝试重写UICollectionViewCellsetHidden,以检测UIKit框架的任何部分调用它时会发生什么,并且再次没有断点触发器。 工具详细信息:我正在iOS7模拟器上使用XCode5-DP6


更新:我的UICollectionView在第一次渲染时正确显示了所有单元格。

好的,所以我能够找出问题所在。委托self是UIViewController的一个子类。在初始化中,我分配self.view=viewFromStoryBoard,调用者在其中传入viewFromStoryBoard,并在storyboard中设置它

因为我并没有真正使用UIViewController子类提供的任何功能,所以我决定切换到NSObject子类,并手动保留指向UICollectionView的指针


这解决了我的问题。然而,我并不是百分之百地了解这个问题的确切性质。我猜,以某种方式覆盖UIViewController的视图并不是看起来的那么简单

iOS 7和UICollectionView有很多漏洞。。。在我的情况下,重新加载数据无法正常工作,它会延迟工作。

如果您的数据源方法根本没有被调用,我怀疑这意味着您的collectionview本身不知何故为零。@BKC我更新了我的问题,但是collectionView是非零的,因为我的初始渲染是正确的。在另一个线程中发布了一个对我有效的解决方案-您必须提供一些关于无法正确工作的详细信息,以便其他人可以帮助您。您是否尝试在委托方法中放置断点,并查看它们是否在重新加载数据调用后被命中?这并不是真正的答案。你应该把这写下来作为评论。