FXForms是一个简单的表单提交框架,他的作者是鼎鼎大名的 Nick Lockwood,你也许听说过他的其他的一些框架,比如 iCarousel .
为什么使用FxForms?
FXForms是怎么工作的?
Fields will automatically be assigned suitable control types, for example, the rememberMe field will be displayed as a UISwitch, the email field will automatically have a keyboard of type UIKeyboardTypeEmailAddress and the password field will automatically have secureTextEntry enabled.
根据它的官方解释,FXForms上面的每一个元素是根据类型来自动生成的,比如 NSString
会自动生成一个 UITextField
. UIDate
会自动生成一个 DateTime Picker
等等。
项目主页: https://github.com/nicklockwood/FXForms
项目的本身自带了很好的例子,在此不再重复。示例工程给出一个入门的例子,能够帮助大家快速上手。
示例工程: https://github.com/ios122/ios122
安装的方式通常有两种,Cocopods, 源代码安装。后一种安装方式很直观,只需要把相应的 FXForms.h 和 FXForms.m拖到项目中即可。这里我们简单介绍一下cocopods的安装:
pod 'FXForms'
pod update --verbose --no-repo-update
~安装完毕, 请打开xcworkspace,示例中是 FXFormsTutorial.xcworkspace
这里我们使用一个最常见的例子:登录。
Step 1, 生成一个新的类,使这个类继承 NSObject,同时 Delegate FXForm, 代码如下:
// // LoginFXForm.h // FXFormsTutorial // // Created by arkilis on 28/11/2015. // Copyright © 2015 arkilis. All rights reserved. // #import <UIKit/UIKit.h> #import "FXForms.h" @interface LoginFXForm : NSObject <FXForm> @property (nonatomic, copy) NSString *email; @property (nonatomic, copy) NSString *password; @end
#import "LoginFXForm.h" @implementation LoginFXForm // 定制 Form // -- username - (NSDictionary *)emailField{ return @{ FXFormFieldHeader: @"Login", // Form Title FXFormFieldKey: @"email", // 对应的 key FXFormFieldTitle: @"Email", // 字段的 Title }; } // -- password - (NSDictionary *)passField { return @{ FXFormFieldKey: @"password", // 这里如果FXForm知道这里用的是密码,则自动屏蔽密码,用星标代替 FXFormFieldTitle: @"password", }; } // Submit button and return button - (NSArray *)extraFields { return @[ // 这里你不用在头文件里声明, 只需要在返回的 NSArray中添加一个元素即可 @{FXFormFieldTitle: @"Submit", FXFormFieldHeader: @"", FXFormFieldAction: @"submitLoginForm:"}, @{FXFormFieldTitle: @"Return", FXFormFieldHeader: @"", FXFormFieldAction: @"returnPreviousView"}, ]; } @end
在注释中,我做了一些详细的解释。
// -- username - (NSDictionary *)emailField{ return @{ FXFormFieldHeader: @"Login", // Form Title FXFormFieldKey: @"email", // 对应的 key FXFormFieldTitle: @"Email", // 字段的 Title FXFormFieldDefaultValue: @"Your Email" // 字段的预留信息 <-- }; }
注意这个option跟FXFormFieldPlaceholder是不一样的,FXFormFieldPlaceholder仍能让你输入,而FXFormFieldDefaultValue是默认值
// -- username - (NSDictionary *)emailField{ return @{ FXFormFieldHeader: @"Login", // Form Title FXFormFieldKey: @"email", // 对应的 key FXFormFieldTitle: @"Email", // 字段的 Title FXFormFieldPlaceholder: @"Your Email", // 字段的预留信息 @"textField.enabled": @(NO) // set readonly }; }
如有什么问题,可以联系我: arkilis#gmail.com
注: 文章由我们 iOS122 的小伙伴 **@Arkilis* * 整理,喜欢就一起参与: iOS122 任务池