我们的应用程序还会找到一个新家:HOMESCREEN第一部分

这篇文章最初发表在 ImmobilienScout技术博客上

在相当长的一段时间内,当用户开始使用我们的应用程序时,该应用程序会立即以其最擅长的屏幕启动:搜索新家。

将搜索表单作为应用程序登录页面,可以极大地帮助用户找到快速结果,或更改其搜索条件以缩小搜索范围。 然后,我们决定将其带入一个新的层次,即根据我们的推荐引擎,用户,当前位置还是显示为上一次搜索添加的最新属性,为您带来内容。 基本上,我们已经将所有这些因素纳入了我们的新主屏幕。

启动应用程序后,将显示新的主屏幕,并向用户提供自定义的内容,第一部分是Last Search ,其中包含最新属性,并添加了与上次执行搜索相同的条件,突出显示了新列表(用户没有尚未打开)。

推荐”部分显示了由我们的推荐引擎提供的属性,该属性适合搜索参数并突出显示不在搜索结果中但具有用户可能感兴趣的相似特征的属性。“ 附近”根据用户可能感兴趣的假设显示附近的属性在他们当前位置附近找到新房子。 在这种情况下,用户是在家中还是在工作中搜索都没有关系。

太酷了,那么我们如何从iOS的角度构建它呢?

乍一看,这似乎是一个简单的网格布局,但是我们做得越多,就越相信我们-它比我们一开始的预期要复杂得多。 因此,例如,如果我们希望每个节内容具有不同的布局,例如全宽属性,例如其他节中的VS Normal属性布局,该怎么办? 或添加或使用一根钉子(而不是普通属性)将一个截面作为全宽地图视图显示? 或嵌套的UICollectionView呢?

这是IGListKit进入游戏的地方!

IGListKit建立在UIKit的UICollectionView之上,并且以数据驱动的方式工作,因此它提供了将数据模型映射到其相关的IGListSectionController的Adapter,然后从IGListSectionController提取并处理应如何显示数据,因此逻辑在这里进行。 这有助于解耦逻辑和不同类型的组件。

区分IGListKit的另一个优势,它使用最长公共子序列算法执行比较和对`collectionView`的更新,这在大数据集(例如我们的结果列表屏幕),例如无缝快速比较和应用更新的情况下是一个大赢家。随包免费提供。

嵌套组件:

从更高级别的角度来看,我们需要支持不同的组件类型,如本文前面所提到的,但是当我们深入研究时,我们需要一个部分来根据需要包含不同的组件类型,并且每个组件都可以控制其类型。会显示出来,考虑到该代码段,可以使用“ SectionController”在“ IGListKit”中的工作方式轻松实现:

这很容易将2个子`sectionController`嵌套在一个父子控件中,每个子控制器完全控制其显示方式并处理它自己的数据源(无论是本地数据还是从后端获取),它还处理第3个状态,即错误情况下,“ ErrorSectionController”定义其行为方式并再次尝试获取组件,并且一切都由数据模型分离和驱动,而无需放置单个集中式自定义逻辑来处理它们的每种情况/状态。

这是我们用于iOS的新主屏幕制作的第一部分,第二部分即将发布。