我在 Storyboard中使用了 UICollectionView。我也设置了 datasourcedelegate
下面的方法被称为

 - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
 return 4;
}

但是 - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath 没有被调用。

附上 UICollectionView 属性的截图。对这个问题有什么想法吗? ios - 不为 collectionView 调用 cellForItemAtIndexPath-LMLPHP

ios - 不为 collectionView 调用 cellForItemAtIndexPath-LMLPHP

如果我隐藏导航栏,现在 collectionView 是可见的。在设置顶部约束 Myheader Collection View.top = Top Layout Guide.bottom + 64 认为它位于 Controller 的顶部。完成方法 - - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath 后,我收到以下警告。

警告:
能够同时满足约束。
可能以下列表中的至少一项约束是您不想要的。
试试这个:
(1) 查看每个约束并尝试找出您不期望的;
(2) 找到添加不需要的约束或约束的代码并修复它。
(
"",
"",
"",
“”
)

将尝试通过打破约束来恢复

在 UIViewAlertForUnsatisfiableConstraints 处创建一个符号断点以在调试器中捕获它。
中列出的 UIView 上的 UIConstraintBasedLayoutDebugging 类别中的方法也可能会有所帮助。

最佳答案

我认为您没有正确设置流量。

因此,它不会转到 - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath 方法。因此,设置断点并检查每个流程布局方法。

流布局方法的顺序调用,
viewdidload customflowlayout 中的第一个将被调用,//如果您已设置

 UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init];
    [flowLayout setScrollDirection:UICollectionViewScrollDirectionVertical];
    float ratio = self.aCollectionView.frame.size.width/3;
    [flowLayout setItemSize:CGSizeMake(ratio, ratio)];
    [flowLayout setMinimumInteritemSpacing:0];
    [flowLayout setMinimumLineSpacing:0];

第二,在您的情况下,此方法也称为
- (NSInteger)collectionView:(UICollectionView *)view numberOfItemsInSection:(NSInteger)section
第三 - 您需要从这一行检查,//您是否正确设置了它
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
    float width = collectionView.frame.size.width/3;//120
    float height = collectionView.frame.size.height/4;//120
    return CGSizeMake(width-17,height-14);
}

4、这个方法叫
- (UIEdgeInsets)collectionView:
(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section {
    return UIEdgeInsetsMake(14.0, 14.0, 0.0, 14.0);
}

最后调用 cellforitem 方法。所以,你的这个方法没有被调用,问题在于上面的方法尝试设置断点并改变单元格大小和边缘昆虫等,然后尝试,

5、如果以上都设置正确,则调用下面的方法。
- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath

关于ios - 不为 collectionView 调用 cellForItemAtIndexPath,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37161779/

10-14 22:27