在 iOS 18 上检查“dataSource?.collectionView(self, cellForItemAt:”功能后,collectionView“scrollToItem”会导致崩溃

问题描述 投票:0回答:1

我有这个扩展可以滚动到第一个 collectionView 单元格:

extension UICollectionView {

func scrollToFirst(inSection: Int = 0, animated: Bool = false) {
     if let _ = dataSource?.collectionView(self, cellForItemAt: IndexPath(row: 0, section: inSection)) { // MARK: Checks if collectionView is filled
            scrollToItem(at: IndexPath(row: 0, section: inSection), at: .right, animated: animated)
        }
     }
}

它可以在 iOS -18 上运行,但在 iOS 18.0 上会崩溃。

swift scroll uicollectionview crash
1个回答
0
投票

您的

dataSource
不知何故尚未加载。虽然单元格的实例可用,但我相信
section
尚未准备好使用,您可能需要打印
numberOfSections
的部分。它可能会导致以下异常:

由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“尝试将集合视图滚动到越界项目

因此,最好在滚动之前检查索引是否有效:

if self.numberOfSections > inSection {
    //TODO: - other stuff
}
© www.soinside.com 2019 - 2024. All rights reserved.