我正在构建一个应用,其中我希望有一个带注解的MapView和一个CollectionView并将其叠加在显示为小卡片的单元格上。
我用来填充MapView和CollectionView卡的数据是动态的,并且始终在更新,因为它已链接到 Firebase RealTime Servers 。
例如->如果您在MapView上的区域中有10个作业,CollectionView将显示10个可滑动的卡片/单元。如果在下一秒创建另一个作业,那么我不希望整个MapView&CollectionView重新加载其数据。相反,我希望在MapView上创建另一个注释(或向群集注释添加+1),并在末尾或适用时向CollectionView添加另一个Card / Cell。这种动态情况也适用于删除MapView / CollectionView上的10个作业中的1个。
这里的收获是-MapView上的这10个作业/注释可以被聚类。当它们聚集在一起时,如果我要点击其中之一,我想放大并显示拆分的作业/注释,并过滤Cards / Cells以显示MapView上显示的Cards / Cells。
我尝试了所有第3方库,但它们都可以工作,但是必须内置其他功能,因此这些库的模块化程度不足以增加和限制我,然后对我有所帮助。因此,我正在使用SWIFT提供的所有本机代理。
我的数据-数据来自2个ViewModel数组,如下所示:
struct ViewModel {
let CardsViewModel : [],
let MapViewModel: []
}
这些ViewModel包含 ID ,这些ID与特定的作业/注释或卡片/单元格相关。
我的问题:试图使这些事情变得动态起来,实际上很难选择要删除或添加到哪个位置的注释,并将更改同时添加到collectionView上,也可能是在用户可能点击了某个集群的某个时刻过滤了collectionViews数据模型之后。
实现此整个功能的最佳方法是什么?我能否请一些严肃的代码语法和示例。甚至可能是一个项目示例?
谢谢!
P.S。我正在使用VIPER架构。