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

FXForms,自动生成iOS表单的更多相关文章

  1. django中ModelForm save方法 以及快速生成空表单或包含数据的表单 包含错误信息

    django中ModelForm学习系列一~save方法 Model代码 from django.db import models # Create your models here. class P ...

  2. Chrome 自动填充的表单是淡黄色的背景

    Chrome 自动填充的表单是淡黄色的背景解决方案; input:-webkit-autofill { -webkit-box-shadow: 0 0 0px 1000px #fff inset; - ...

  3. jquery自动将form表单封装成json的具体实现

    前端页面:<span style="font-size:14px;"> <form action="" method="post&q ...

  4. hibernate中.hbm.xml和注解方式自动生成数据表的简单实例(由新手小白编写,仅适用新手小白)

    绝逼新手小白,so 请大神指点! 如果真的错的太多,错的太离谱,错的误导了其他小伙伴,还望大神请勿喷,大神请担待,大神请高抬贵嘴......谢谢. 好了,正题 刚接触ssh,今天在搞使用.hbm.xm ...

  5. 【工具篇】利用DBExportDoc V1.0 For MySQL自动生成数据库表结构文档

    对于DBA或开发来说,如何规范化你的数据库表结构文档是灰常之重要的一件事情.但是当你的库,你的表排山倒海滴多的时候,你就会很头疼了. 推荐一款工具DBExportDoc V1.0 For MySQL( ...

  6. MVC动态生成的表单:表单元素比较多 你就这样写

    MVC动态生成的表单:表单元素比较多 你就这样写: public ActionResult ShoudaanActionResult(FormCollection from,T_UserM user) ...

  7. Mybatis总结之如何自动生成数据库表结构

    一般情况下,用Mybatis的时候是先设计表结构再进行实体类以及映射文件编写的,特别是用代码生成器的时候. 但有时候不想用代码生成器,也不想定义表结构,那怎么办? 这个时候就会想到Hibernate, ...

  8. 使用Vue动态生成form表单

    form-create 表单生成器 具有数据收集.校验和提交功能的表单生成器,支持双向数据绑定和事件扩展,组件包含有复选框.单选框.输入框.下拉选择框等表单元素以及省市区三级联动,时间选择,日期选择, ...

  9. sqlite3 根据实体自动生成建表语句

      public class BuildSqlTool { public static string GetCreateTableSql(object t) { //CREATE TABLE &quo ...

随机推荐

  1. Ceph monitor故障恢复探讨

    1 问题 一般来说,在实际运行中,ceph monitor的个数是2n+1(n>=0)个,在线上至少3个,只要正常的节点数>=n+1,ceph的paxos算法能保证系统的正常运行.所以,对 ...

  2. Oracle 11g 的官方支持周期和时限

    Oracle公司对于自身产品的支持策略大多数人很难搞清楚,对于Oracle Database 11g的支持周期,有很多朋友产生了异议,参考下文提到的一些文件,希望可以帮助大家理解Oracle的产品支持 ...

  3. Logstash——multiline 插件,匹配多行日志

    本文内容 测试数据 字段属性 按多行解析运行时日志 把多行日志解析到字段 参考资料 在处理日志时,除了访问日志外,还要处理运行时日志,该日志大都用程序写的,比如 log4j.运行时日志跟访问日志最大的 ...

  4. Android开发:第四日番外——Assets文件夹和RAW文件夹区别

    话说上回说到SQLite数据库,其中涉及到把已经设计好的数据库打包到APK中,提到可以放置在Assert文件夹或者RAW文件夹中,那么两者到底有什么区别呢?让我们来探究一下. 一.res/raw和as ...

  5. Django 源码小剖: 应用程序入口 WSGIHandler

    WSGI 有三个部分, 分别为服务器(server), 应用程序(application) 和中间件(middleware). 已经知道, 服务器方面会调用应用程序来处理请求, 在应用程序中有真正的处 ...

  6. 基于Bootstrap的后台通用模板

    人总是比较刁的,世界的时尚趋势不断变化,对系统UI的审美也在不断疲劳中前进,之前觉得好好的UI,过了半年觉得平平无奇,不想再碰,需要寻求新的兴奋点. 下面这套UI就是半年前的(今日:2015-12), ...

  7. ubuntu-16.10-desktop-amd64.iso 版本 安装 oracle 11gR2 11.2.0.1 database

    特点: 需要重新安装:libaio1_0.3.109-2ubuntu?_amd64.deb.默认的libaio库有问题,和其默认libaio的编译方式有关! 需要重新安装gcc 4.x,默认的gcc ...

  8. SCRIPT1010: 缺少标识符 常见原因

    SCRIPT1010: 缺少标识符 ,一般是在IE下会出现这个问题. 今天在调试一段js代码时,在chrome,ff下均正常,但是在IE下就是一直这样的提示,出现这个问题的原因主要有以下几点: 1.出 ...

  9. 解决play-1.4.0在linux或mac下提示No such file or directory的问题

    问题原因:"play"脚本中有特殊符号. 解决方案:写脚本去掉即可. 代码:fixplay.py 放在play-1.4.0目录下执行.亲测在osx与ubuntu下均可用. with ...

  10. window 内核详尽分析

    http://bbs.pediy.com/showthread.php?t=185055