SwiftForms 1.8.2

SwiftForms 1.8.2

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布上次发布2017年12月
SwiftSwift版本4.0.2
SPM支持SPM

Miguel Ángel Ortuño维护。



  • Miguel Ángel Ortuño


SwiftForms

目的

SwiftForms 是一个用 Swift 编写的功能强大且极灵活的库,允许您仅通过定义几行代码即可创建表单。它还提供了自定义单元格外观、使用自定义单元格和定义您自己的选择控制器的能力。

#####以下是使用 SwiftForms 的示例应用程序的屏幕截图

Screenshot of Example application

如何创建表单

使用 SwiftForms 创建表单非常简单。您只需要从 FormViewController 取代您的控制器并定义一个 FormDescriptor 实例及其部分和行。这里是创建一个简单的表单以输入电子邮件和用户密码的示例。

// Create form instace 
var form = FormDescriptor()
form.title = "Example form"

// Define first section
var section1 = FormSectionDescriptor()

var row = FormRowDescriptor(tag: "name", rowType: .Email, title: "Email")
section1.rows.append(row)

row = FormRowDescriptor(tag: "pass", rowType: .Password, title: "Password")
section1.rows.append(row)

// Define second section
var section2 = FormSectionDescriptor()

row = FormRowDescriptor(tag: "button", rowType: .Button, title: "Submit")
section2.rows.append(row)

form.sections = [section1, section2]

self.form = form

要查看更复杂的表单定义,您可以查看示例应用程序。

单元格外观

每个行描述符都有一个 configuration 字典,它允许您自定义单元格的外观和行为。为了更改行的具体视觉方面,只需将 row.configuration.cell.appearance 中的值设置为包含自定义键值编码属性的字典。

以下是一个示例

row.configuration.cell.appearance = ["titleLabel.font" : UIFont.boldSystemFontOfSize(30.0), "segmentedControl.tintColor" : UIColor.redColor()]

自定义单元格

此外,您可以通过从 FormBaseCell 类派生来创建 100% 自定义的单元格。在这种情况下,请不要忘记重写 configureupdate 方法。第一个方法将在单元格创建后被调用一次,而第二个方法则每次应刷新单元格内容时都会被调用。

这里有帮助您定义自定义单元格行为的函数。

func configure() {
    /// override
}
    
func update() {
    /// override
}
    
class func formRowCellHeight() -> CGFloat {
    return 44.0
}
    
class func formViewController(formViewController: FormViewController, didSelectRow: FormBaseCell) {
}

一旦您定义了您自定义的单元格,为了使其可用于具体的行,您必须设置 FormRowDescriptorcellClass 属性。

自定义选择控制器

为了自定义选择控制器,您的类应该符合 FormSelector 协议。这样,您将能够访问推控制器的单元格实例,并能够根据用户交互修改其属性或设置其行值。

在定义了您的类之后,不要忘记在配置字典中设置 row.configuration.selection.controllerClass 的值以使用您的自定义选择控制器。

需求

  • iOS 8.0 及以上

版权

SwiftForms最初基于 XLForm github 项目。(https://github.com/xmartlabs/XLForm

有关详细信息,请检查 LICENSE 文件。

联系

如果您在使用 SwiftForms 的项目中有任何建议或问题

Miguel Angel Ortuño,[email protected]

@ortuman