layoutAttributesForElementsInRect的无限循环

时间:2014-06-05 16:05:45

标签: ios objective-c uicollectionview infinite-loop freeze

我完全不知道为什么会发生这种情况,但无论出于何种原因,我使用的集合视图都无限循环[UICollectionViewData layoutAttributesForElementsInRect:]方法。

集合视图位于我的自定义导航栏中。在我使用此自定义导航栏的一个场景中,一切都按预期工作。在另一种情况下,它无限循环。

  • 我已经尝试过不在collectionView上设置数据源或委托。
  • 我已尝试设置数据源和委托,但为0返回itemsInSection
  • 我正在使用自动布局,因为在工作情况下,我正在初始化自定义导航栏,如工作情况。

关于发布代码,我不确定要发布什么。无限循环在调用[UIWindow makeKeyAndVisible]后开始。此方法永远不会返回。只是在经过时间分析之后,才发现导致问题的是[UICollectionViewData layoutAttributesForElementsInRect:]

2 个答案:

答案 0 :(得分:12)

当我手动将contentOffset更新为没有元素的collectionView时(即当[UICollectionViewData layoutAttributesForElementsInRect:]为0时),numberOfItemsInSection内部存在同样的无限循环问题。

答案 1 :(得分:1)

我在表视图中遇到了不同集合视图的高度问题,所以我遵循了这个UICollectionView inside a UITableViewCell — dynamic height?。但我错误地评论了[self.collectionView layoutIfNeeded];因为我认为它会提高滚动性能。我取消评论它再次起作用!不知道为什么它可以工作