当前位置

网站首页> 程序设计 > 开源项目 > 程序开发 > 浏览文章

FXForms,自动生成iOS表单 - iOS122

作者:小梦 来源: 网络 时间: 2024-05-14 阅读:

1.简介

FXForms是一个简单的表单提交框架,他的作者是鼎鼎大名的 Nick Lockwood,你也许听说过他的其他的一些框架,比如 iCarousel.

为什么使用FxForms?

  1. 表单处理简单化,使开发者能轻松上手

  2. 表单自适应不同屏幕

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

2.安装

安装的方式通常有两种,Cocopods, 源代码安装。后一种安装方式很直观,只需要把相应的 FXForms.h 和 FXForms.m拖到项目中即可。这里我们简单介绍一下cocopods的安装:

Step 1. 新建一个iOS工程,在工程根目录下新建一个文件 Podfile, 内容如下:

pod 'FXForms'

Step 2. Run:

pod update --verbose --no-repo-update

~安装完毕, 请打开xcworkspace,示例中是 FXFormsTutorial.xcworkspace

3. 基本的使用规则

这里我们使用一个最常见的例子:登录。

Example : 登录View

Step 1, 生成一个新的类,使这个类继承 NSObject,同时 Delegate FXForm, 代码如下:

LoginFXForm.h

////  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

LoginFXForm.m

#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

在注释中,我做了一些详细的解释。

4. 一些技巧

  1. 有的时候我们需要给字段设定一些默认值,比如Email。我们可以设置字段 FXFormFieldDefaultValue:

// -- username- (NSDictionary *)emailField{    return @{ FXFormFieldHeader:         @"Login",       // Form Title FXFormFieldKey:@"email",       // 对应的 key FXFormFieldTitle:          @"Email",       // 字段的 Title FXFormFieldDefaultValue:   @"Your Email"   // 字段的预留信息  <-- };}

注意这个option跟FXFormFieldPlaceholder是不一样的,FXFormFieldPlaceholder仍能让你输入,而FXFormFieldDefaultValue是默认值

  1. 设置只读, 有些时候我们要设置一些表单字段为只读。

// -- username- (NSDictionary *)emailField{    return @{ FXFormFieldHeader:         @"Login",       // Form Title FXFormFieldKey:@"email",       // 对应的 key FXFormFieldTitle:          @"Email",       // 字段的 Title FXFormFieldPlaceholder:    @"Your Email",  // 字段的预留信息 @"textField.enabled":      @(NO)           // set readonly };}

5. 联系我

如有什么问题,可以联系我: arkilis#gmail.com


注: 文章由我们 iOS122 的小伙伴 @Arkilis 整理,喜欢就一起参与: iOS122 任务池