PostalAddressRow
由Xmartlabs SRL提供。
内容
介绍
PostalAddressRow是一个Eureka行,用于显示一系列UITextField,供用户输入邮政地址信息。
使用方法
import Eureka
import PostalAddressRow
class ViewController: FormViewController {
override func viewDidLoad() {
super.viewDidLoad()
form +++ Section()
<<< PostalAddressRow() {
$0.streetPlaceholder = "Street"
$0.statePlaceholder = "State"
$0.cityPlaceholder = "City"
$0.countryPlaceholder = "Country"
$0.postalCodePlaceholder = "Zip code"
}
}
}
需求
- iOS 9.0+
- Xcode 8.3+
- Eureka 版本 2.*
参与
- 如果您想贡献,请随意提交pull请求。
- 如果您有功能请求,请提交一个问题。
- 如果您发现了一个bug或需要帮助,请在提交问题前检查StackOverflow上的旧问题和线程(标签'PostalAddressRow')。
在贡献之前,请检查贡献文件了解详细信息。
如果您在应用程序中使用PostalAddressRow,我们非常乐意了解相关信息!在Twitter上联系我们。
示例
按照以下3个步骤运行示例项目:克隆PostalAddressRow仓库,打开PostalAddressRow工作空间,并运行示例项目。
安装
CocoaPods
CocoaPods 是 Cocoa 项目的依赖管理器。
要安装 PostalAddressRow,只需在 Podfile 中添加以下行
pod 'PostalAddressRow', '~> 1.0'
Carthage
Carthage 是一款用于 Cocoa 的简单、去中心化的依赖项管理器。
要安装 PostalAddressRow,只需将以下行添加到您的 Cartfile 即可
github "EurekaCommunity/PostalAddressRow" ~> 1.0
然后,您需要将 PostalAddressRow
和 Eureka
框架(来自 Carthage/Builds/iOS
文件夹)添加到项目的目标嵌入式二进制文件中。
自定义
PostalAddressCell
有五个可使用和自定义的文本字段
var streetTextField: UITextField?
var postalCodeTextField: UITextField?
var cityTextField: UITextField?
var stateTextField: UITextField?
var countryTextField: UITextField?
默认情况下,还有两个分隔视图,这些视图在文本字段之间显示
var firstSeparatorView: UIView?
var secondSeparatorView: UIView?
另一个变量 textFieldOrdering
包含所有使用的文本字段,并应清楚地说明它们显示的顺序,以便在行之间进行导航。
var textFieldOrdering: [UITextField?] = []
在 PostalAddressRow
中,您可以指定每个文本字段的占位符和格式化程序。您还可以指定这些格式化程序是否应在用户输入文本时使用。
另一个变量 postalAddressPercentage
定义左边的文本字段相对于右边的文本字段的空间比例(默认单元格中,邮编和州位于左边,城市和国家位于右边)。此常量用于对应文本字段间的比例宽度约束。
您还可以指定 keyboardReturnType
,该变量处理键盘回车键,取决于当前行之后是否有其他行。
如何更改单元格设计
您可以轻松实现您自己的设计。为此,请创建一个包含您单元格的 nib 文件并按需自定义。确保该单元格是 _PostalAddressCell
的子类(它不能是通用的)。然后连接您使用的 UITextField 和分隔视图的 outlets,您就准备好了。示例项目展示了如何进行所有这些操作。
注意:有时连接 outlets 可能很棘手。如果 Xcode 不允许您将它们连接到
_PostalAddressCell
,那么您应该手动添加它们,编辑 .xib 文件,或者将 outlets 声明复制到您的子类,在 xib 文件中将它们连接到文本字段,然后从您的子类中删除它们 :-)
在创建您的 nib 文件后,您必须创建一个使用它的行,如下所示
final class MyPostalAddressRow: _PostalAddressRow<PostalAddressCell>, RowType {
public required init(tag: String? = nil) {
super.init(tag: tag)
cellProvider = CellProvider<PostalAddressCell>(nibName: "CustomNib", bundle: Bundle.main)
}
}
路线图
仍需完成的事项
- 添加国家选择器?
作者
变更日志
可以在 CHANGELOG.md 文件中找到。