[英]UICollectionView content is hidden after reloadData
我有一个UICollectionView
从该显示内容NSFetchedResultsController
。 collectionView有一个部分,在该部分中有一个标题。 标头允许用户在集合视图中过滤内容。 头视图的委托连接到包含集合视图的UIViewController
。
用户更改过滤器选项之一后,标头视图就会向其委托激发一条消息。 委托变化对谓词fetchRequest
其NSFetchedResultsController
和电话-[NSFetchedResultsController performFetch:]
。 接下来,必须通知收集视图内容已更改。 这可以通过多种方式完成,但是我更喜欢的方式是调用-[UICollectionView reloadData]
。 不幸的是,此方法无法按预期方式工作:当我调用此方法时,整个集合视图都会消失。 这些是我针对此问题所做的一些观察:
hidden
标志设置为YES
。 我试图通过在-[UIView setHidden:]
上设置符号断点来跟踪导致此问题的方法。 不幸的是,它在UICollectionView
子视图内永不中断。 -[UICollectionView reloadData]
之后,再也不会调用collectionView:cellForItemAtIndexPath:
-[UICollectionView reloadData]
-[UICollectionView reloadData]
之后,再也不会调用collectionView:viewForSupplementaryElementOfKind:atIndexPath:
-[UICollectionView reloadData]
numberOfSectionsInCollectionView:
仍被调用,并且仍返回正确的数字(在这种情况下为1)。 collectionView:numberOfItemsInSection
并且仍返回正确的数字(在这种情况下为1)。 到目前为止,我为解决该问题所做的尝试:
UICollectionViewFlowLayout
实例上的所有自定义项( sectionInset
, itemSize
) separatorInset
上) UICollectionView
实例 UICollectionView
的子视图,并相应地设置contentInset
。 不幸的是, UICollectionView
不喜欢我对其自动布局约束进行调整,并且在这样做时会崩溃。 [UICollectionView reloadSections:]
而不是[UICollectionView reloadData]
。 这可行,但我不喜欢动画。 -[UICollectionView dealloc]
的断言失败而崩溃。 用这种方式设置标头感觉不对,但是不幸的是, UICollectionView
没有像UITableView
( tableHeaderView
)这样的全局标头。
尝试在主线程中重新加载它们
dispatch_async(dispatch_get_main_queue(), ^{
[self.collectionView reloadData];
});
它对我有用
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.