问题标签 [uicollectionreusableview]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
8061 浏览

swift - UICollectionview scrollToItemAtIndexPath,在动画完成之前不加载可见单元格

我有一个UICollectionView142 个单元格。7.5 随时可见。

我正在将一个单元格从indexPath0 移动到 100。但我也想滚动到那个新位置。

下面的代码工作正常。但它会为移动和滚动设置动画,但随后会加载中央/移动单元格前后的单元格。我认为这是因为细胞是可重复使用的。但是有 142 个,我无法预加载所有这些

这不是最好的效果,我想预加载新位置周围的单元格,100之前的4indexPath个和100之后的4个,然后看看移动和滚动的动画。你能帮忙吗?

0 投票
1 回答
485 浏览

ios - 即使在删除部分数据并重新加载 UICollectionView 后,部分标题仍然存在

删除部分中的最后一项后,目标是从“UICollectionView.不幸的是,即使底层数据模型中没有部分,部分标题仍然存在”中删除整个部分,包括其标题。

刷新视图——通过从导航堆栈中弹出它并导航回视图——正确显示UICollectionView删除了节标题。

在测试用例中,只有一个部分,因此UICollectionView在删除最后一项后应该变为空白。

建议?

0 投票
1 回答
213 浏览

ios - 如何将 Header 设置为 UICollectionView

我想将默认部分标题设置为UICollectionView。我使用了下面的代码,它崩溃了。

-viewDidLoad

-viewForSupplementaryElementOfKind

谢谢

0 投票
2 回答
12711 浏览

ios - 未在自定义 UICollectionViewLayout 上调用 viewForSupplementaryElementOfKind

我创建了一个自定义UICollectionViewLayout,并将其放在情节提要中的 Collection View Controller 中。我在显示项目/单元格时没有遇到太多问题。我的问题是viewForSupplementaryElementOfKind没有被调用。我似乎无法确定为什么会这样。我试图回到默认布局,然后它确实调用了它,但我需要我的自定义UICollectionViewLayout. 我已经离开NSLogs 去检查并且viewForSupplementaryElementOfKind没有被调用。

这是我的 MyCollectionViewController.m

现在这是我的 MyFlowLayout.m

正如您在 MyFlowLayout 中看到的那样,有些事情我已经尝试过,但仍然没有调用viewForSupplementaryElementOfKind. 我尝试实施layoutAttributesForItemAtIndexPath,因为我有layoutAttributesForSupplementaryViewOfKind. 我还尝试使用您看到的固定数字(例如 75 和 320)来检查是否会生成标题。你看到的委托,它只是为了获得一个视图的高度。

因为我已经为标题提供了足够的空间以供查看,并且将 NSLogs 全部留下,但(UICollectionReusableView*)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath没有被调用。

以下是我查看并尝试过的一些内容:stackoverflow,但正如您从我包含的注释代码中看到的那样。它仍然没有工作。

谢谢您的帮助。

0 投票
2 回答
3726 浏览

ios - 以编程方式将 UILabel 添加到集合单元,快速

我正在尝试在Collection Cell的subView中添加 UILabels 。但是当我滚动到另一个单元格并返回时,所有 UIlabels 都出现在两个单元格上,有些写在另一个单元格下。

我试过了collectionView.cellForItemAtIndexPath(indexPath) as? CollectionViewCell,但是当我使用它时,没有显示 UIlabel(我尝试了断点,它没有在 if 语句之后)

我该如何解决?

谢谢!!!

编辑

我尝试以编程方式创建 UILabel。但通过这种方式,我使用了用 StoryBoard 设计的元素和以编程方式创建的元素。实际上我不能因为这个:

我以编程方式创建单元格的所有内容(collectionView 是使用情节提要创建的)并且它运行良好。

0 投票
1 回答
58 浏览

ios - 具有不同子视图的自定义 CollectionViewCell?

我正在创建一个名为MessageCell. 此消息单元格具有三个组件,a headerLabelmessageContainerViewfooterLabel。问题是,根据消息的类型(视频、交易、交付确认、照片、文本等),我想显示具有特定操作等的特定类型的视图。

在此处输入图像描述

实现这一目标的最佳方法是什么?我尝试将我的容器视图设置为UIView我的单元格子类中的一个,并根据消息的类型,将其设置为等于特定的子视图,但这不起作用:

任何帮助将不胜感激。

0 投票
0 回答
283 浏览

ios - 集合可重用视图未使用自定义布局显示

我在开始时创建了一个带有 CollectionReusableView 的 UICollectionView 并实现了所需的委托方法:

通过这样做,collectionView Header 正确显示。但是当我将 CollectionViewLayout 更改为自定义布局(不是流布局)时,检测到了问题,不再显示标题视图。调试时,我看到委托方法 viewForSupplementaryElementOfKind: atIndexPath: 没有被调用。

请注意,我使用RFQuiltLayout作为 UICollectionView 布局。

在此先感谢您的帮助

0 投票
2 回答
1729 浏览

ios - UICollectionView 补充视图如何正确插入或删除

简短的问题:

有没有办法在performBatchUpdates:块中添加和删除补充视图,如单元格和部分,类似于insertItemsAtIndexPaths: deleteItemsAtIndexPaths:甚至reloadItemsAtIndexPaths:方法?

长解释:

我使用UICollectionViewwith 部分。单元格像网格一样布置,每行最多可以有 6 个单元格。如果单元格的总数没有填满一个部分的所有行,我会添加额外的补充视图。额外的补充视图只是填补了空白。所以结果应该是每个部分都完全填充了所有可用的单元格,并且(可能的)剩余的空白点填充了补充视图。所以每行有 6 个视觉元素,一个单元格或一个补充视图。

为了实现这一点,我UICollectionViewFlowLayout使用以下实现实现了一个基于自定义的布局prepareLayout:

如果从一开始所有数据都可用并且数据没有更改,则此方法非常有用。但是,如果在生命周期内添加和删除数据,它就会惨遭失败。performBatchUpdates:在补充视图中插入和删除单元格。

应该发生什么:

对于与insertItemsAtIndexPaths:补充视图同时插入的每个单元格,indexPath都应删除。此外,对于使用新补充视图删除的每个单元格,deleteItemsAtIndexPaths:应同时添加indexPath

问题:

调用我的prepareLayout:布局并计算正确的layoutAttributes. 但layoutAttributesForSupplementaryViewOfKind:atIndexPath:被称为怪异indexPaths。特别是从数组中删除layoutAttributesForSupplementaryViewOfKind:atIndexPath:的 old 被调用!indexPathssupplementaryViewAttributeList

例子:

在插入新单元格的情况下,prepareLayout:正确删除layoutAttributes,但layoutAttributesForSupplementaryViewOfKind:atIndexPath: 仍然会调用不再可用和删除的 indexPath!仅此而已。indexPath对于所有其他补充观点,没有额外的要求。

为什么layoutAttributesForSupplementaryViewOfKind:atIndexPath:要求indexPaths不再可用?如何正确删除、插入或重新加载补充视图?我想念什么?

来源:

完整的来源可以在这里找到:

自定义布局:https ://github.com/sarn/ARNClassicFilms/blob/master/classicFilms/classicFilms/layout/ARNCollectionViewFocusGuideFlowLayout.m

CollectionView 控制器: https ://github.com/sarn/ARNClassicFilms/blob/master/classicFilms/classicFilms/view-controllers/ARNMovieOverviewController.m (performBatchUpdates:在类的最后一个方法中)

0 投票
1 回答
76 浏览

uicollectionviewcell - 如何将垂直和水平滚动分别设置为 CollectionReusableView 和 CollectionVeiwCell

UICollectionView 的 ContentView 有两个项目。

  • 集合可重用视图。
  • 集合视图单元。

在这里,我想将 CollectionReusableView 设置为具有垂直滚动方向的标题和具有水平滚动方向的 collectionVeiwCells。

我怎样才能做到这一点

在此处输入图像描述

在这里,Top View 是 collectionReusableView,Bellow view 是 collectionViewCell。我想单独为 CollectionveiwCells 进行水平滚动。

在此处输入图像描述

0 投票
1 回答
170 浏览

ios - 用户在我的应用中滚动 UIViewCollectionCells 列表时的奇怪行为(每个单元格中的数据随机更改)

在我正在使用的应用程序中UICollectionView,我决定按照以下代码使用它:

因此,我有一个带有UILabeland的单元格,UIImage并且对于从 json 获取的每个对象,我对其进行解析并将用户的数据分配给该单元格。

当我加载窗口时,我会看到带有照片的用户名,但是当我开始滚动浏览收藏视图时,用户的照片会发生变化,并且用户得到的照片与他们应该拥有的不同。

我读过它可能与单元重用有关(到目前为止我对此一无所知),我只是假设它应该加载一次(当用户打开此面板时)然后保持原样。但是,每次用户滚动该列表时,似乎都会“获取”此数据。

那么我如何才能准确地解决我的问题并确保每次用户滚动列表时 - 数据都是正确的?

在这里可能有用的另一件事 -getDataFromUrl从 url 获取照片的方法: