第二个选项卡中的 UICollectionView 导致第一个选项卡中的 UICollectionView 崩溃应用程序

UICollectionView in second tab causing UICollectionView in first tab to crash app

我是一名初学者,目前正在开发我的第一个 IOS 应用程序。在我的应用程序主页中,我有一个顶部菜单栏,它由一个水平集合视图和 3 个单元格页面(3 个选项卡)组成。在每个单元格中都有 3 个集合视图,显示我的数据库中的对象。我还有一个底部有 3 个选项卡的 UITabBarController。

我正在尝试在第二个选项卡中添加另一个集合视图。但是,一旦我将第二个选项卡视图控制器 class 更改为 uiCollectionViewController 类型,当我返回到第一个(主页)并尝试滚动我的水平集合视图时,应用程序将崩溃。只有当第二个选项卡更改为 UICollectionView 类型时才会出现此错误。

如果这难以理解,我深表歉意。 我已经坚持了一段时间,所以我不得不尝试。

谢谢!!

这是错误的照片和崩溃时我的代码:

您不需要创建新的 NSIndexPath 并将其转换为 IndexPath。可以直接新建一个IndexPath使用

let indexPath = IndexPath(item: menuIndex, section: 0)

最后,确保 menuIndex 的值小于数据源数组的 count

我认为您的委托方法有问题。在您的控制器中,在集合视图委托方法 'cellForItem' 中尝试添加检查是否为正确的集合视图调用方法。即,如果您在一个选项卡上,则添加签入方法 'cellForItem' 以确认它是否是相同的集合视图。

我终于明白问题出在哪里了..

我在将两个不同的集合视图设置为选项卡栏控制器中的项目时向它们提供了相同的布局参数。

Let layout1 = UICollectionViewFlowLayout()

Let firstController = FirstCollectionViewController(collectionViewLayout: layout1)

Let layout2 = UICollectionViewFlowLayout()

Let secondController = 
SecondCollectionViewController(collectionViewLayout: layout2)

此实施解决了我的问题!