dat*_*elk 5 iphone cocoa-touch objective-c ios uicollectionview
我有一个UICollectionView显示来自的内容NSFetchedResultsController.collectionView有一个部分,在该部分中有一个标题.标头允许用户过滤集合视图中的内容.标题视图的委托连接到UIViewController包含集合视图.
一旦用户更改其中一个过滤器选项,标题视图就会向其委托发出消息.委托变化对谓词fetchRequest其NSFetchedResultsController和电话-[NSFetchedResultsController performFetch:].接下来,必须通知集合视图内容已更改.这可以通过多种方式完成,但我喜欢的方式是通过调用-[UICollectionView reloadData].不幸的是,这种方法不能像预期的那样工作:当我调用这个方法时,整个集合视图就会消失.以下是我就此问题所做的一些观察:
hidden标志设置为YES.我尝试通过设置符号断点来跟踪导致此问题的方法-[UIView setHidden:].不幸的是,它从未打破UICollectionView子视图.collectionView:cellForItemAtIndexPath:在打电话后从未打过电话-[UICollectionView reloadData].collectionView:viewForSupplementaryElementOfKind:atIndexPath:在打电话后从未打过电话-[UICollectionView reloadData].numberOfSectionsInCollectionView: 仍然被调用并仍然返回正确的数字(在这种情况下为1).collectionView:numberOfItemsInSection 仍然被调用并仍然返回正确的数字(在这种情况下为1).到目前为止我尝试过解决这个问题的方法:
sectionInset,itemSize)UICollectionViewFlowLayoutseparatorInset上的所有自定义()UICollectionViewUICollectionView并相应地进行设置contentInset.不幸的是UICollectionView,当我这样做时,不喜欢我的自动布局约束和崩溃.[UICollectionView reloadSections:]而不是[UICollectionView reloadData].这有效,但我不喜欢动画.-[UICollectionView dealloc].以这种方式设置标头感觉不对,但遗憾的UICollectionView是没有像UITableView(tableHeaderView)这样的全局标头.
尝试在主线程中重新加载它们
dispatch_async(dispatch_get_main_queue(), ^{
[self.collectionView reloadData];
});
Run Code Online (Sandbox Code Playgroud)
它对我有用
| 归档时间: |
|
| 查看次数: |
1502 次 |
| 最近记录: |