使用Eureka在iOS中创建表单

现在已经有一段时间了,我们一直在从事银行iOS应用程序项目。 我们一直在使用用Objective-C编写的Forms的旧框架,因此我们开始研究更新和更灵活的替代方案。 我们发现Eureka很好地解决了我们的问题,但我们还需要创建许多自定义元素。 在本文中,我将通过概述如何发现Eureka以及如何编写自定义元素来分享我们的经验。

在此表单框架的帮助下,我们可以做什么? 尤里卡(Eureka)的最大力量在于框架已经包含的许多行中。 您可以直接使用它们,选择范围非常广泛。

仅举几例: TextRowDateRowCheckRow ,各种格式的数字行,列表行等。

Eureka存储库的自述文件中的图片也可以说明一切。


基本的构建块是单元 。 它们有助于从逻辑上构建表单并抽象出UITableView的复杂性,而Eureka显然是基于此构建的。 这些构建块使您可以专注于表单本身,而不是UITableViewDataSourceDelegate的实现细节。

这些部分等效于UITableView部分。 它们将表单元素的逻辑部分归为一个共同的标题。 它们在可选部分中具有特殊含义,我们将在后面介绍。

可以解释为表单的元素,其中包含项的值和语义。 它们可以保存类型安全 ,可以被禁用隐藏 。 它们也可以具有定义的自定义属性。

单元格是行表示的实现。 他们拥有用户界面。 Eureka框架定义了许多单元,但是您可以定义自己的单元。 单元格对行属性的变化做出反应。

每个都有其对应的Cell ,它已通过泛型定义了其类型。 泛型实际上是框架的重要组成部分。 如果您查看源代码,则可以看到它们。

对于我们最基本的示例,我们将实现一个简单的表单,其中包含名称,生日和一个布尔值(如果有人喜欢Eureka)。 我们还将使用一个按钮行,它将预填充前3个字段。 这听起来很简单-实际上确实如此,但是为我们提供了编写Eureka Forms的良好介绍。

为了更好地了解这一点,我制作了我们正在构建的应用程序的屏幕截图。

构建第一部分的最基本代码如下:

输入选择器允许用户通过显示出现在键盘区域中的选择器来选择答案。 如果要使用Eureka提供的默认单元格,则代码很简单。

视图控制器中的代码非常简单,因此我将向您展示而无需任何进一步的说明。 我们定义了我们在这里使用的自定义StringLengthRow类。

我将更详细地介绍这些自定义元素的定义代码。 我们定义两个类。 对于行,我们使用StringLengthRow,对于单元格StringLengthCell。

让我们从StringLengthRow开始,因为这是更简单的一种,并且将在我们的viewcontroller代码中使用。 在这里,我们只声明要设置的属性。 我们还在初始化程序中定义了如何获取新单元格。 我们选择从笔尖加载它。

StringLengthCell当然更复杂。 我们有两个出口-连接到笔尖的valueTextField和valueProgressView。 然后,我们有了每个自定义单元实现的2种基本方法-setup()和update()。

setup()被调用一次。 它是单元的一种初始化功能。 在这里,我们设置为在选中时不突出显示单元格,并设置文本字段的委托。

每次在行上更改值(或调用updateCell())时,都会调用update()。 它将行的属性传播到单元UI。

然后,我们有一个UITextFieldDelegate方法来跟踪长度。 更改文本时,我们还有textFieldDidChange(_ :)方法。 这将从文本字段写入行的值,并将长度反映到进度视图。

  • https://github.com/inloop/eureka-article-这篇文章的源代码
  • https://github.com/xmartlabs/Eureka — Eureka源,在示例应用程序中有很多示例