应用程序在“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 &lt;NSIndexPath: 0x1564e0b0&gt; 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”上崩溃的主要内容,如果未能解决你的问题,请参考以下文章

在特定时间后终止在后台运行的应用程序?

mac 应用程序安装文件夹在哪

我应该在应用程序中还是在应用程序服务器中定义数据源?

iOS 应用程序在苹果应用程序审查中崩溃,但在本地完全无法重现

应用程序在启动时立即崩溃,仅在设备上

在一个 kubernetes 集群中运行多个应用程序或每个应用程序在一个集群中运行