不调用cellForItemAtIndexPath,但numberOfItemsInSection
这可能是一个重复的post,但我还没有find任何解决scheme:
我设置我的UICollectionView
为:
UINib *nib = [UINib nibWithNibName:@"CollectionViewCell" bundle:[NSBundle mainBundle]]; [_collectionView registerNib: nib forCellWithReuseIdentifier:@"bCell"];
(我试图设置代表,没有委托,等等)。
但是,只有这个
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
被调用while
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
不。
我检查了numberOfItemsInSection我返回,它总是> 0(正好17)。
我已经检查过要调用[_collectionView reloadData];
也没有任何反应。
我尝试过不同的事情,但是我无法做到这一点。
此外,我的UICollectionView
应该在这里,但它不是:
有人有线索吗? 谢谢。
好的,我认为这可能对今后的问题有用…
这是因为StoryBoard的限制。 我不明白为什么会这样,因为我只是固定了一个水平的空间。 我删除了该视图的水平空间约束,一切工作正常。
那么,让我们的生活stream动。
将此添加到viewDidLoad:
self.automaticallyAdjustsScrollViewInsets = NO;
1.当您返回numberOfItemsInSection方法上的0个项目时,cellForItemAtIndexPath将被调用。
2.检查你的UICollectionViewFlowLayout是正确的还是你自己的。 UICollectionViewLayout是抽象类,不能直接使用它
3.检查集合视图单元格和集合视图的大小。
4.尝试通过代码设置您的collectionview的大小。 [yourCollectionViewFlowLayout setItemSize:CGSizeMake(200,200)];
5.如果它们中的任何一个都不起作用,那么杀死Xcode并重新启动。 有时它会解决这个问题。
苹果说
UICollectionViewLayout类是一个抽象基类,您可以inheritance该类并用于为集合视图生成布局信息。 布局对象的工作是确定集合视图边界内的单元格,补充视图和装饰视图的位置,并在询问时将该信息报告给集合视图。 集合视图然后将提供的布局信息应用于相应的视图,以便它们可以在屏幕上呈现。
您必须inheritanceUICollectionViewLayout才能使用它。 不过,在考虑子类化之前,您应该查看UICollectionViewFlowLayout类,以查看它是否可以适应您的布局需求。
我也面临同样的问题,并最终知道我已经通过错误的类对象为collectionViewLayout,我改变为UICollectionViewFlowLayout而不是UICollectionViewLayout创buildUICollectionView的对象,如下面它stared调用所有的委托方法。
collectionView = UICollectionView(frame: CGRectMake(5, 0, 400, 40) , collectionViewLayout: UICollectionViewFlowLayout())
我也遇到这个问题,我检查了所有可能的问题,每件事看起来都不错。 然后我尝试改变重载方法。
[self.colView reloadData] – > [self.collectionView reloadSections:[NSIndexSet indexSetWithIndex:x]];
然后所有事情都奏效了 但是,我仍然不明白如何。
我发现只要至less有一个单元格的高度为零,cellForItemAtIndexPath就会被调用(在iOS 10中)。
免责声明:对不起,如果这应该是一个评论 – 没有足够的声誉。
帮助我的是设置正确的itemSize
。 我的cellForItemAtIndexPath
没有被调用,因为高度错误。
所以我把尺寸设置在:
[self.myCollectionViewFlowLayout setItemSize:CGSizeMake(170, 300)];
对我来说,问题是我正在编程创build我的集合视图,但我已经把CGRectZero
作为它的框架。 在viewDidLoad
之后,我使用Auto Layout进行了铺设。 如果我在视图控制器加载时展开集合视图,它会正确地调用cellForItemAtIndexPath:
在“标准”约束(底部,顶部,顶部,尾部固定到内部视图)的故事板上,我也有同样的问题。
我用这种方式解决了:
let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout() layout.itemSize = self.collectionView.frame.size
对我来说,这是我的collectionView的容器没有translatesAutoresizingMaskIntoConstraints = false
- 评估string中的mathexpression式? (NSString)
- NSPropertyListSerialization propertyListWithData产生不兼容的转换警告/错误
- 合并video和audio:导出透明/空白video
- 如何使用NSURLCache在脱机时返回caching的API响应(iOS应用程序)
- 如何获得iOS设备的屏幕高度和宽度
- 为什么不能设置cell.selectionStyle = UITableViewCellSelectionStyleBlue?
- IOS桌面视图devise块状单元格与边距和间距
- 如果在一个ViewController中使用两个UITableView,而另一个使用自定义单元格refrence,而另一个则很简单
- 单击UITableview单元格内的search时出现错误的结果