use*_*700 60 uicollectionview ios7
在尝试从我的集合视图中卸载一批图像然后用另一批替换它们的过程中,我遇到了一个错误,根据原始图像或后续图像组是否多于或少于预期的替换,发生断言错误,其中说:
*** Assertion failure in -[UICollectionViewData validateLayoutInRect:],
/SourceCache/UIKit_Sim/UIKit-2891.1/UICollectionViewData.m:341
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException',
reason: 'UICollectionView recieved layout attributes for a cell with an
index path that does not exist: <NSIndexPath: 0xb141c60> {length = 2, path = 0 - 2}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,现有的图像计数列表为5,新的图像列表计数为2.因此,当它到达第三个图像时 - 发生异常 - 表示UI CollectionViewDataDelegate不知道数据流中的更改.
有关如何确保UICollectionView引用新图像的任何建议?当然我叫'reloadData'......
谢谢
Dom*_*der 85
我遇到了同样的问题.代码在6.1下运行,在7.0以下崩溃我用以下方法解决了问题:
在功能
-(NSInteger) numberOfSectionsInCollectionView:(UICollectionView *)collectionView
Run Code Online (Sandbox Code Playgroud)
我打电话
[myCollectionView.collectionViewLayout invalidateLayout];
Run Code Online (Sandbox Code Playgroud)
就这样.
Mic*_*ień 22
使用iOS 10和11,这有助于:
collectionView.reloadData()
collectionView.collectionViewLayout.invalidateLayout()
Run Code Online (Sandbox Code Playgroud)
无效的布局应该是在重新加载数据之后.
Bep*_*ppe 21
无论多米尼克桑德和user1544494是正确的,他们的解决方案是好的.
不幸的是,我注意到,如果你设置minimumLineSpacingForSectionAtIndex或者minimumInteritemSpacingForSectionAtIndex,你的collectionView的外观将会破坏(迟早).
把invalidateLayout在viewWillLayoutSubviews回答这个问题,并有助于保持viewCollection的外观.
- (void)viewWillLayoutSubviews
{
[super viewWillLayoutSubviews];
[viewCollection.collectionViewLayout invalidateLayout];
}
Run Code Online (Sandbox Code Playgroud)
Top*_*hul 12
这很简单.就像下面的句子一样.
'UICollectionView recieved layout attributes for a cell with an
index path that does not exist: <NSIndexPath: 0xb141c60> {length = 2, path = 0 - 2}
Run Code Online (Sandbox Code Playgroud)
这意味着dataSouce上没有indexPath(0,2).但是,您的UICollectionViewLayout为indexPath(0,2)返回UICollectionViewLayoutAttributes.
您应该返回仅存在于dataSouce上的UICollectionViewLayoutAttributes.
我认为它已经从iOS7改变了.
| 归档时间: |
|
| 查看次数: |
34429 次 |
| 最近记录: |