如何改善您的IGListCollectionView
在我的上一篇文章中,我展示了如何将UITableView迁移到IGListCollectionView,今天,我将展示如何通过添加其他类型的单元格和处理触摸事件来改进它。 所以我们将最后一篇文章的项目用作我们的入门项目,您可以在这里找到
我们的目标是添加一个UISearchBar,一个带有水平滚动的UICollectionView,它将填充事件(我将其称为EmbeddedView),这是一种查看字符(行和网格)并在触摸事件上更改viewcontroller的替代方法。
为了简短而无聊,我将仅介绍一些关键主题,向您展示我们如何实现这一目标的:
首先,我们需要更改将模型加载到IGListCollectionView的方式。 我们的ViewController
有一个应该符合IGListDiffable
的Character
数组,但是现在我们将使用该协议而不是一个具体的类,因此我们需要创建一个新的IGListDiffable.
数组IGListDiffable.
我们要包含在列表中的所有对象都应符合它,因此我们将创建一个Search
,一个CharactableView
(将在我们的单元格是行还是网格时处理), Portrait
和一个Embedded
模型。
每个模型将代表我们的IGListCollectionView中的一个单元格。 您可以在下面看到我们如何在Search
模型中做到这一点
之后,我们将在SectionControllers上工作。 除了EmbeddedSectionController
之外,每个SectionController的工作方式都与我在上一篇文章中看到的一样,这一点值得特别注意,因为它将具有自己的IGListCollectionView
和IGListAdapter
因此我们可以从Marvel API中提取事件并将其显示给用户。
它应该实现IGListAdapterDataSource
和IGListAdapterDelegate
来拉动更多事件,例如在无尽的TableView中。
最后,我们只需要更改ViewController
即可使用我们的新单元格。
我们创建了一个名为views
的IGListDiffable
数组。
在IGListAdapterDataSource
objects(for:)
方法中,我们基于filterString过滤字符,并添加Seach和EmbbedView以便将其放置在字符列表之前。
return [self.searchView as IGListDiffable] + [self.embeddedView] + (filter as [IGListDiffabe])
每次更改列表的布局时,我们都需要调用adapter.performUpdates()
来更改列表,行到网格或网格到行的位置,它会基于diff算法重新加载IGListCollectionView。
要处理单元格上的触摸事件,我们需要实现didSelectItem()
方法,就像在RowSectionController
上RowSectionController
您可以在此处检查最终项目。 如果您有任何意见,请通知我。