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

时间:2018-10-18 02:50:33

标签: ios swift uicollectionview uitabbarcontroller

我是一个初学者,目前正在开发我的第一个IOS应用程序。在我的应用程序主页中,我有一个顶部菜单栏,该菜单栏包含一个水平收集视图,其中包含3个单元格页面(3个选项卡)。在这些单元格的每一个内部,都有3个集合视图,显示我数据库中的对象。我还有一个UITabBarController,底部带有3个标签。

我正在尝试在第二个标签中添加另一个收藏夹视图。但是,一旦将第二个选项卡视图控制器类更改为uiCollectionViewController类型,则当我跳回到第一个(主页)并尝试使用水平集合视图滚动时,应用程序将崩溃。仅当第二个选项卡更改为UICollectionView类型时,才出现该错误。

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

谢谢!!

下面是错误和我的代码在崩溃时的照片:

enter image description here

3 个答案:

答案 0 :(得分:0)

您无需制作新的NSIndexPath并将其投放到IndexPath中。您可以直接制作一个新的IndexPath并使用它。

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

我终于弄明白了这里的问题。

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

让layout1 = UICollectionViewFlowLayout()

让firstController = FirstCollectionViewController(collectionViewLayout:layout1)

让layout2 = UICollectionViewFlowLayout()

让secondController = SecondCollectionViewController(collectionViewLayout:layout2)

此实现解决了我的问题!