在UICollectionView

时间:2016-12-09 05:15:08

标签: ios swift calendar uicollectionview epg

先决条件 - 环境:iOS 9.0或更高版本 - 使用Swift 3.0.1

感谢您的回复。我正在更新问题,并试图更好地了解问题。

发布代码可能会有所帮助,但我不允许发布代码,因为我没有IP。

但是我正在尝试构建类似于日历/节目指南的内容,您可以在其中为每个类别提供几天的活动。

想象一下,列左侧的类别,它们可以是collectionveiw的各个部分,每个类别都有几天的事件,这是一行。

CAT 1:事件1,事件2 ...事件n CAT 2:活动1,活动2 ...活动n CAT 3:活动1,活动2 ...活动n  。  。  。 CAT m:事件1,事件2 ...事件n

问题:整个数据非常动态且非常有用。我无法预取所有记录,它们大约超过80-100K。下载所有数据并将其显示在网格上需要几分钟。

用户可以选择任何日期和任何时间,我必须将集合视图滚动到该日期和时间,并显示这些类别的事件。此外,用户可以明显地向两个方向滚动并浏览事件,在这种情况下,事件被加载为无限滚动时尚。

在前一个选项中,当用户跳转到整个时间轴上的特定日期和时间时,我必须跳过加载其他先前的事件(因为我还没有它们 - 未知)并显示相关的事件用户选择的日期和时间。

我没有预先提供所有的IndexPath,要在屏幕上显示,我如何跳过事件并动态更新集合视图,就像我们动态加载图像以及首先加载并比其他图像更早显示的图像。

我正在使用事件的startDate来计算xPosition,类别在加载后不会经常更改,因此我们可以以某种方式避免重新加载部分,但这些部分中的项目一直在变化,并且它们以随机方式出现。

当控制器加载时,第一组事件从服务器获取并显示,现在如果用户决定跳转到某个D-Day和T-Time,这可能是整个时间轴上的任何地方,我必须获取事件对于那些日期并填充相关部分的项目(在屏幕上可见)并更新界面。这是我遇到问题的地方,我没有适当的方法。

希望这更清楚。 I have "tried" to mock this up

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

我遇到与日历项目相同的问题。我实施的解决方案对你不起作用,但我在这里提到它可以为你提供如何根据你的情况解决它的线索。

我的日历具有以下功能:用户可以滚动到某个日期以进入未来。问题是日期单元格可以是自定义大小。因此,由于它们滚动到某个未来日期,为了让我知道目标offset,我需要知道单元格0 -to- destinationOffset的偏移量,因为单元格大小不同。这意味着我必须查询中间所有单元格的大小,这导致2-3个滞后时间(或者在您的情况下,下载时间很长)。

所以这是我的解决方案。 我最初有一个名为sizeForCellsAtMonth的委托函数,每个月都会调用它来确定大小。我现在已将此函数更改为仅调用一次。

该功能现在只有两个参数:

  1. defaultSizeOfCells
  2. exceptionToDefaults - 这将是单元格大小不同的特定月份
  3. 使用这些信息,我可以计算所有月份的大小,因为我知道手头的尺寸。所以通过改变我看待我的代表的方式解决了我的问题。也许你可以尝试沿着这些方向寻找某个地方,或者我的回答可以为你提供你能做什么的线索。