lia*_*ols 6 animation objective-c ios uicollectionview uicollectionviewlayout
我有一个自定义UICollectionViewLayout,使用补充视图将页脚放在每页的底部.
这似乎一直很好,直到我开始在页面底部插入单元格.
由于补充视图必须链接到UICollectionView中的NSIndexPath,因此在我的准备布局方法中,我检测页面上的最后一个单元格,然后将补充视图的layoutAttributes存储到页面上的最后一个indexPath.
这是插入新单元格之前的集合视图布局:
|- Page 1
|-- [0, 0]
|-- [0, 1]
|-- [0, 2]
|- Footer (indexPath [0, 2])
|- Page 2
|-- [1, 0]
|-- [1, 1]
|- Footer (indexPath [1, 1])
Run Code Online (Sandbox Code Playgroud)
正如所料,我的prepareLayout方法UICollectionViewLayoutAttributes为indexPaths [0, 2]和[1, 1].创建和存储.
layoutAttributesForSupplementaryViewOfKind:atIndexPath:方法也被调用两次返回indexPaths的正确属性([0, 2]和[1, 1])
现在的问题是,当我在索引处插入一个新单元格时,[1, 2]该prepareLayout方法正确地重新计算布局并将第二个页脚的indexPath更改为[1, 2]您所期望的.
但是,当layoutAttributesForSupplementaryViewOfKind:atIndexPath:再次调用以更新接口时,其indexPath属性仍会返回[1, 1].然后在方法上返回nil,因为它不存在并导致崩溃(显然)!
为什么layoutAttributesForSupplementaryViewOfKind:atIndexPath:仍然返回不正确的(旧)indexPath?我已经检查过布局是否无效以及我存放layoutAttributes的footerAttributes字典是否有正确的(新)indexPath所以从我读过的内容应该可以正常工作?
同样重要的是要注意,这只发生在动画插入时...只是调用reloadData不会崩溃.
此外,我无法将补充视图链接到单个部分,因为我的自定义布局旨在分页collectionView,并且部分可以溢出到不同的页面上,这意味着每个部分有多个补充视图.
这是我的布局.m文件的要点:https: //gist.github.com/liamnichols/6621694
或者你可以在这里找到回购:https://github.com/liamnichols/LNCollectionViewPagedLayout/tree/master/Source
我的替代解决方案是将补充视图分配给一个自定义NSIndexPath,其中indexPath.row值将决定补充视图所在的页面,但是我不确定这是否是一种合适的方式来处理这个问题,以为我会事先征求意见.
任何帮助都会很棒,
谢谢.
| 归档时间: |
|
| 查看次数: |
1250 次 |
| 最近记录: |