FXForms,自动生成iOS表单

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 任务池

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏iOS开发日记

iOS开发系列补充知识点

1.iOS尺寸设置--在iOS中尺寸的单位是点不是像素,在retina屏幕中一个点有两个像素。此外在retina屏幕中图片一般采用“xxx@2x.png”命名,...

3446
来自专栏iOS Developer

Swift2.0后Alamofire的使用方法

1352
来自专栏前端小作坊

Atom-Shell 入门

现在已经有很多框架可以让我们用JavaScript、HTML和CSS来编写跨平台桌面应用,Atom Shell便是其中之一。Atom Shell基于nodejs...

893
来自专栏学海无涯

iOS开发之集成高德地图(一)

在iOS开发中,经常会使用到定位和地图,Apple自带的定位和地图应付一般的场景绰绰有余,但是也缺少一些功能,如POI搜索、不够接地气等。因此作者选择了高德地图...

3086
来自专栏移动端开发

环信SDK 头像、昵称、表情自定义和群聊设置的实现 二(附源码)

前言: 环信SDK 头像、昵称、表情自定义和群聊设置的实现 一(附源码)    接着上面说的,我们来说说表情,它在哪里可以自定义,怎么写,那个方法是添加表情...

2006
来自专栏ionic3+

【技巧】ionic3自动聚焦暴力实现

很早前和群里的人探讨过自动聚焦,在android上可以,但是在ios上失败,后来在网上看到这个:

592
来自专栏前端人人

React第三方组件6(状态管理之Mobx的使用⑤异步操作)

本教程总共5篇,每日更新一篇,请关注我们!你可以进入历史消息查看以往文章,也敬请期待我们的新文章! 1、React第三方组件6(状态管理之Mobx的使用①简单...

2754
来自专栏每日一篇技术文章

weex-32-如何加载本地图片

截止我写这篇文章时(2017-5-21),组件<image> 的src 属性不支持本地图片

851
来自专栏Guangdong Qi

iOS 9 UIWebView不能加载百度和控制电池条字体颜色

今天写了一个UIWebView给H5的妹子测试,本来很简单的东西,不应该出错的,但是还是有错,而且还是两个

522
来自专栏Web 开发

ckeditor 从入门到放弃

通过 CKEDITOR.plugins.add方法添加插件,第一个参数为插件名,后面为参数列表。

470

扫码关注云+社区