应用程序在“layoutAttributesForSupplementaryElement”上崩溃
Posted
技术标签:
【中文标题】应用程序在“layoutAttributesForSupplementaryElement”上崩溃【英文标题】:App getting crashed on `layoutAttributesForSupplementaryElement` 【发布时间】:2017-07-14 10:23:41 【问题描述】:我正在使用UICollectionView
,在滚动到UICollectionView
的特定部分时,我在UICollectionView
上编写了一个扩展程序,该扩展程序在iPhone 6 和模拟器上都可以正常工作,但在iPhone 5 应用程序中崩溃了我调试它但可以'无法找到问题所在。
这是我的代码
extension UICollectionView
func scrollToIndexpathByShowingHeader(_ indexPath: IndexPath)
let sections = self.numberOfSections
if indexPath.section <= sections
let attributes = layoutAttributesForSupplementaryElement(ofKind: UICollectionElementKindSectionHeader, at: indexPath)
let topOfHeader = CGPoint(x: 0, y: attributes!.frame.origin.y - self.contentInset.top)
self.setContentOffset(topOfHeader, animated:false)
在let attributes = layoutAttributesForSupplementaryElement(ofKind: UICollectionElementKindSectionHeader, at: indexPath)
我的应用程序崩溃了,崩溃的原因是:
reason: 'no UICollectionViewLayoutAttributes instance for -layoutAttributesForSupplementaryElementOfKind: UICollectionElementKindSectionHeader at path <NSIndexPath: 0x1564e0b0> length = 2, path = 18 - 1'
请告诉我什么是问题以及如何解决 在此先感谢:-)
【问题讨论】:
【参考方案1】:这是因为单元格无法检索到 layoutAttributes。如果更新创建的单元格不可见,layoutAttributesForItemAtIndexPath 返回 nil。
我认为您可以使用以下解决方案。
override layoutAttributesForItemAtIndexPath 必须使用这个方法:
Swift 3.0 对于header方法,希望对你有帮助
override func layoutAttributesForItemscrollToSection(at_ indexPathsection: IndexPathInt) -> UICollectionViewLayoutAttributes?
//set Contentoffset to particular section
【讨论】:
我无法理解这一点。请详细说明我。 @Jaydeep 上一个答案是正确的layoutAttributesForItem(at: indexPath)
请重新编辑,以便我接受
@asimabbasi,奇怪:)
我不明白首先要做什么以上是关于应用程序在“layoutAttributesForSupplementaryElement”上崩溃的主要内容,如果未能解决你的问题,请参考以下文章