【发布时间】:2014-01-20 00:28:14
【问题描述】:
我从未使用过 UITableViewControllers 或 UICollectionViewControllers,因为您可以通过使用 UIViewController 及其根 UIView 来获得相同的功能,然后在 xib 或故事板中添加 UITableView 并分配其委托和数据源。而且我还能够将活动指示器放在根 UIView 的中心。
现在在使用 UICollectionViewController 时事情变得有点复杂,它的根视图是 UICollectionView。我需要更新其他人的一些代码,他们将活动指示器放在 UICollectionView 中(在故事板中)。问题是当单元格被重用时,这个活动指示器会被隐藏,因为活动指示器视图是最底部的。我无法更改可见性优先级故事板,而且在视图 didLoad 中的这段代码也不起作用:
[self.itemsCollectionView bringSubviewToFront:self.activityIndicator];
因为collection view cell的labels、images等views放在后面,collectionView:cellForItemAtIndexPath:期间。我可以尝试在collectionView:cellForItemAtIndexPath: 中调用bringSubviewToFront: 但这将是一个错误的决定。在使用 UITableViewControllers 或 UICollectionViewControllers 时如何实现这一点的任何想法?
恕我直言,使用 UITableViewControllers 或 UICollectionViewControllers 的唯一原因是因为静态单元格在设计布局时不会显示在故事板中。
更新 iOS 似乎将 UICollectionView 包装在 UICollectionViewControllerWrapperView 中。试图在 viewWillAppear 中向这个包装视图添加活动:
[self.itemsCollectionView.superview addSubview:self.activityIndicator];
但没有运气 - 活动指示器仍在单元格下方。
【问题讨论】:
-
如何将活动指示器放在
UICollectionViewCell的中心并在集合视图的末尾注入单元格?您可以使用insertItemsAtIndexPaths来实现这一点。但是不要忘记在单元格上设置另一个重用标识符,这样它就不会与您的常规单元格混淆。
标签: ios objective-c uicollectionview uiactivityindicatorview