- (UICollectionViewCell*)collectionView:(UICollectionView*)collectionView cellForItemAtIndexPath 未调用

Posted

技术标签:

【中文标题】- (UICollectionViewCell*)collectionView:(UICollectionView*)collectionView cellForItemAtIndexPath 未调用【英文标题】:- (UICollectionViewCell*)collectionView:(UICollectionView*)collectionView cellForItemAtIndexPath not called 【发布时间】:2012-10-31 06:24:44 【问题描述】:

我有这两个代表:

#pragma mark = UICollectionViewDataSource

- (NSInteger)collectionView:(UICollectionView*)collectionView numberOfItemsInSection:(NSInteger)section

    NSLog(@"COUNT IS %d", [[AHImageDataSource sharedDataSource] count]);
    return [[AHImageDataSource sharedDataSource] count];


- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView*)collectionView

    return 1;

numberOfItemsInSection 返回 12。但未调用 cellForItem。当我只是硬编码 numberOfItemsInSection 时,它实际上被调用了。知道为什么会出现这个奇怪的问题吗?

这是一个 sample project 演示问题

【问题讨论】:

无法运行您的示例项目。它总是显示一个空白屏幕。有什么遗漏吗? nope.. 它应该显示一个空白屏幕.. 但你应该在 cellForItem 中放置一个断点,看看它不会被调用 好的。知道了。 numberOfItemsInSection 中的硬编码是什么?我尝试在那里设置 15,但它仍然没有调用。 hmm..真的吗?我尝试了 4 或基本上任何数字,它被调用了 【参考方案1】:

如果[[AHImageDataSource sharedDataSource] count] 正在返回nilcellForItemAtIndexPath 将不会被调用。所以请确保[[AHImageDataSource sharedDataSource] count] 有一定的价值。

我无法下载您的示例项目,所以帮不上什么忙。 :(

【讨论】:

【参考方案2】:

您是否设置了委托?..

确保方法名称正确,否则您遗漏了某些内容。

【讨论】:

是的..我做了,如果你愿意,你可以查看示例项目【参考方案3】:

PintCollectionViewLayout.m 文件未包含在目标构建阶段的编译源中。添加它,为我解决了问题。

【讨论】:

是的,这检查出来了。将 PintCollectionViewLayout.m 添加到编译源后,一切正常。如果您按原样运行应用程序,它会记录“Interface Builder 文件中的未知类 PintCollectionViewLayout”。当您将文件添加到编译源时,它就会消失

以上是关于- (UICollectionViewCell*)collectionView:(UICollectionView*)collectionView cellForItemAtIndexPath 未调用的主要内容,如果未能解决你的问题,请参考以下文章

UICollectionViewCell与UIScrollView取消didSelectItemAtIndexPath

UICollectionViewCell 子类问题

重用 UICollectionViewCell

UICollectionViewCell 中的 Outlet 为零

UICollectionViewCell 边框/阴影

用 nib 定义 UICollectionViewCell